#include <iostream>
#include <vector>
#include <functional>
#include <iostream>
using namespace std;
template <typename A, typename B>
auto map( const std::vector<A> & source, const B & b )
-> std::vector< decltype( b(source[0]) ) >
{
auto result = std::vector< decltype( b(source[0]) ) >();
for( auto & n: source)
{
result.push_back( b(n) );
}
return result;
}
float convert( int num )
{
return num;
}
int main() {
std::vector<int> ints = {1,2,3,4,5};
std::vector<float> floats = map( ints, []( int v) -> float { return v;} );
for( auto & n: floats)
{
std::cout << n << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+IAphdXRvIG1hcCggY29uc3Qgc3RkOjp2ZWN0b3I8QT4gJiBzb3VyY2UsIGNvbnN0IEIgJiBiICkKLT4gc3RkOjp2ZWN0b3I8IGRlY2x0eXBlKCBiKHNvdXJjZVswXSkgKSA+CnsKCWF1dG8gcmVzdWx0ID0gc3RkOjp2ZWN0b3I8IGRlY2x0eXBlKCBiKHNvdXJjZVswXSkgKSA+KCk7Cglmb3IoIGF1dG8gJiBuOiBzb3VyY2UpCgl7CgkJcmVzdWx0LnB1c2hfYmFjayggYihuKSApOwoJfQoJcmV0dXJuIHJlc3VsdDsKfQoKZmxvYXQgY29udmVydCggaW50IG51bSApCnsKCXJldHVybiBudW07Cn0KCmludCBtYWluKCkgewoJCglzdGQ6OnZlY3RvcjxpbnQ+IGludHMgPSB7MSwyLDMsNCw1fTsKCXN0ZDo6dmVjdG9yPGZsb2F0PiBmbG9hdHMgPSBtYXAoIGludHMsIFtdKCBpbnQgdikgLT4gZmxvYXQgeyByZXR1cm4gdjt9ICk7Cglmb3IoIGF1dG8gJiBuOiBmbG9hdHMpCgl7CgkJc3RkOjpjb3V0IDw8IG4gPDwgc3RkOjplbmRsOwoJfQoJcmV0dXJuIDA7Cn0=