#include <iostream>
#include <typeinfo>
#include <utility>
template< typename ... Args >
auto MyMakePair( Args&&... args ) -> decltype( std::make_pair( std::forward<Args>(args)... ) )
{
return std::make_pair( std::forward<Args>(args)... );
}
int main()
{
auto pair = MyMakePair( 27ul, 4.2f );
std::cout << "first: " << typeid(pair.first).name() << " " << pair.first << '\n';
std::cout << "second: " << typeid(pair.second).name() << " " << pair.second << '\n';
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZWluZm8+CiNpbmNsdWRlIDx1dGlsaXR5PgoKdGVtcGxhdGU8IHR5cGVuYW1lIC4uLiBBcmdzID4KYXV0byBNeU1ha2VQYWlyKCBBcmdzJiYuLi4gYXJncyApIC0+IGRlY2x0eXBlKCBzdGQ6Om1ha2VfcGFpciggc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uICkgKQp7CiAgIHJldHVybiBzdGQ6Om1ha2VfcGFpciggc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uICk7Cn0KCmludCBtYWluKCkKewogICBhdXRvIHBhaXIgPSBNeU1ha2VQYWlyKCAyN3VsLCA0LjJmICk7CgogICBzdGQ6OmNvdXQgPDwgImZpcnN0OiAiIDw8IHR5cGVpZChwYWlyLmZpcnN0KS5uYW1lKCkgPDwgIiAiIDw8IHBhaXIuZmlyc3QgPDwgJ1xuJzsKICAgc3RkOjpjb3V0IDw8ICJzZWNvbmQ6ICIgPDwgdHlwZWlkKHBhaXIuc2Vjb25kKS5uYW1lKCkgPDwgIiAiIDw8IHBhaXIuc2Vjb25kIDw8ICdcbic7Cn0K