TargetContainer map( SourceRange &&_source, Function const &_function ) { TargetContainer result; fcppt::algorithm::detail::map_reserve( result, _source ); for( fcppt::algorithm::range_element_type< SourceRange > element : _source ) result.insert( result.end(), _function( element ) ); return result; }
TargetContainer map_optional( Source &&_source, Function const &_function ) { TargetContainer result; for( fcppt::algorithm::range_element_type< Source > element : _source ) { auto result_element( _function( element ) ); static_assert( fcppt::is_optional< typename std::decay< decltype( result_element ) >::type >::value, "map_optional requires a function that returns an optional" ); if( result_element.has_value() ) result.insert( result.end(), std::move( result_element.get_unsafe() ) ); } return result; }
void push_back( TargetContainer& x, const SourceContainer& y ){ x.insert( x.end(), y.begin(), y.end() ) ; }