#include <iostream>
template <class Ty1, class Ty2>
class Pair
{
public:
typedef Ty1 first_type;
typedef Ty2 second_type;
first_type first;
second_type second;
Pair(Ty1, Ty2);
};
template <class Ty1, class Ty2>
Pair<Ty1, Ty2>::Pair(Ty1 f, Ty2 s)
: first(f), second(s)
{}
template <class Ty1, class Ty2>
Pair<Ty1, Ty2> make_pair(Ty1 f, Ty2 s)
{
return Pair<Ty1, Ty2>(f, s);
}
int main()
{
Pair<int, float> foo = make_pair(42, 3.14f);
std::cout << "First: " << foo.first << std::endl;
std::cout << "Second: " << foo.second << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPGNsYXNzIFR5MSwgY2xhc3MgVHkyPgpjbGFzcyBQYWlyCnsKcHVibGljOgoJdHlwZWRlZiBUeTEgZmlyc3RfdHlwZTsKCXR5cGVkZWYgVHkyIHNlY29uZF90eXBlOwoJCglmaXJzdF90eXBlIGZpcnN0OwoJc2Vjb25kX3R5cGUgc2Vjb25kOwoJCglQYWlyKFR5MSwgVHkyKTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBUeTEsIGNsYXNzIFR5Mj4KUGFpcjxUeTEsIFR5Mj46OlBhaXIoVHkxIGYsIFR5MiBzKQo6IGZpcnN0KGYpLCBzZWNvbmQocykKe30KCnRlbXBsYXRlIDxjbGFzcyBUeTEsIGNsYXNzIFR5Mj4KUGFpcjxUeTEsIFR5Mj4gbWFrZV9wYWlyKFR5MSBmLCBUeTIgcykKewoJcmV0dXJuIFBhaXI8VHkxLCBUeTI+KGYsIHMpOwp9CgppbnQgbWFpbigpCnsKCVBhaXI8aW50LCBmbG9hdD4gZm9vID0gbWFrZV9wYWlyKDQyLCAzLjE0Zik7CgoJc3RkOjpjb3V0IDw8ICJGaXJzdDogIiA8PCBmb28uZmlyc3QgPDwgc3RkOjplbmRsOwoJc3RkOjpjb3V0IDw8ICJTZWNvbmQ6ICIgPDwgZm9vLnNlY29uZCA8PCBzdGQ6OmVuZGw7CgoJcmV0dXJuIDA7Cn0=