#include <vector>
#include <iostream>
using namespace std;
class Container
{
public :
Container( ) { }
Container( int _i) : i( _i) { }
int get_i( ) const { return i; }
int i;
} ;
template <
class U,
class V,
template < typename ...> class T
>
T< V> WugMap(
typename T< U> :: const_iterator first,
typename T< U> :: const_iterator second,
V ( U:: * method) ( ) const )
{
T< V> collection;
while ( first ! = second)
{
collection.insert ( collection.end ( ) , ( ( * ( first++ ) ) .* method) ( ) ) ;
}
return collection;
}
int main( )
{
vector< Container> containers;
for ( int i = 0 ; i < 10 ; ++ i) containers.push_back ( ( Container( i) ) ) ;
WugMap< Container, int , std:: vector > (
containers.begin ( ) , containers.end ( ) , & Container:: get_i ) ;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIENvbnRhaW5lcgp7CnB1YmxpYzoKICAgIENvbnRhaW5lcigpIHt9CiAgICBDb250YWluZXIoaW50IF9pKSA6IGkoX2kpIHt9CgogICAgaW50IGdldF9pKCkgY29uc3Qge3JldHVybiBpO30KCiAgICBpbnQgaTsKfTsKCiAgICB0ZW1wbGF0ZSA8CiAgICAgICAgY2xhc3MgVSwgCiAgICAgICAgY2xhc3MgViwgCiAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uPiBjbGFzcyBUIAogICAgPgoKICAgIFQ8Vj4gV3VnTWFwKAogICAgICAgIHR5cGVuYW1lIFQ8VT46OmNvbnN0X2l0ZXJhdG9yIGZpcnN0LCAKICAgICAgICB0eXBlbmFtZSBUPFU+Ojpjb25zdF9pdGVyYXRvciBzZWNvbmQsIAogICAgICAgIFYgKFU6OiptZXRob2QpKCkgY29uc3QpCiAgICB7CiAgICAgICAgVDxWPiBjb2xsZWN0aW9uOwogICAgICAgIHdoaWxlIChmaXJzdCAhPSBzZWNvbmQpCiAgICAgICAgewogICAgICAgICAgICBjb2xsZWN0aW9uLmluc2VydChjb2xsZWN0aW9uLmVuZCgpLCAoKCooZmlyc3QrKykpLiptZXRob2QpKCkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gY29sbGVjdGlvbjsKICAgIH0KCmludCBtYWluKCkKewogICAgdmVjdG9yPENvbnRhaW5lcj4gY29udGFpbmVyczsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7ICsraSkgY29udGFpbmVycy5wdXNoX2JhY2soKENvbnRhaW5lcihpKSkpOwoKICAgIFd1Z01hcDxDb250YWluZXIsIGludCwgc3RkOjp2ZWN0b3I+KAogICAgICAgIGNvbnRhaW5lcnMuYmVnaW4oKSwgY29udGFpbmVycy5lbmQoKSwgJkNvbnRhaW5lcjo6Z2V0X2kpOwp9
compilation info
prog.cpp:20: error: ISO C++ does not include variadic templates
prog.cpp: In function ‘int main()’:
prog.cpp:42: error: no matching function for call to ‘WugMap(__gnu_cxx::__normal_iterator<Container*, std::vector<Container, std::allocator<Container> > >, __gnu_cxx::__normal_iterator<Container*, std::vector<Container, std::allocator<Container> > >, int (Container::*)()const)’
stdout