// Do-Not-Copy semantics void Invoke ( T0 const& t0 ) { std::size_t i; for ( i = 0; i < invocations.size(); ++i ) { invocations[i]( t0 ); } }
// Forward-Semantics void Invoke ( T0&& t0 ) { std::size_t i; for ( i = 0; i < invocations.size(); ++i ) { invocations[i]( std::forward<T0>( t0 ) ); } }
bool Remove( const Token& token ) { invocations.erase( token ); return true; }
std::size_t InvocationCount( ) const { return invocations.size( ); }
Token Add( TCallback&& c ) { invocations.emplace_back( std::move( c ) ); return --invocations.end( ); }
Token Add( const TCallback& c ) { invocations.emplace_back( c ); return --invocations.end( ); }
Token Add ( TCallback&& c ) { invocations.push_back( c ); return --invocations.end(); }