#include <iostream>
using namespace std;
#include <iostream>
#include <tuple>
#include <vector>
#include <utility>
struct Foo
{
Foo(std::tuple<int, float>)
{
std::cout << "Constructed a Foo from a tuple\n";
}
Foo(int, float)
{
std::cout << "Constructed a Foo from an int and a float\n";
}
};
int main()
{
int one = 1;
float pi = 3.14;
std::tuple<int, float> t(one, pi);
std::vector<Foo> vec;
vec.push_back(Foo(t));
std::cout << "Creating p1...\n";
// std::pair<Foo, Foo> p1(t, t);
vec.emplace_back(one, pi);
std::cout << "Creating p2...\n";
// std::pair<Foo, Foo> p2(std::piecewise_construct, t, t);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDx0dXBsZT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHV0aWxpdHk+CiAKc3RydWN0IEZvbwp7CiAgICBGb28oc3RkOjp0dXBsZTxpbnQsIGZsb2F0PikKICAgIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgIkNvbnN0cnVjdGVkIGEgRm9vIGZyb20gYSB0dXBsZVxuIjsKICAgIH0KIAogICAgRm9vKGludCwgZmxvYXQpCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJDb25zdHJ1Y3RlZCBhIEZvbyBmcm9tIGFuIGludCBhbmQgYSBmbG9hdFxuIjsKICAgIH0KfTsKIAppbnQgbWFpbigpCnsKCWludCBvbmUgPSAxOwoJZmxvYXQgcGkgPSAzLjE0OwogICAgc3RkOjp0dXBsZTxpbnQsIGZsb2F0PiB0KG9uZSwgcGkpOwogICAgc3RkOjp2ZWN0b3I8Rm9vPiB2ZWM7CiAgICB2ZWMucHVzaF9iYWNrKEZvbyh0KSk7CiAKICAgIHN0ZDo6Y291dCA8PCAiQ3JlYXRpbmcgcDEuLi5cbiI7CiAgICAvLyBzdGQ6OnBhaXI8Rm9vLCBGb28+IHAxKHQsIHQpOwogICAgdmVjLmVtcGxhY2VfYmFjayhvbmUsIHBpKTsKIAogICAgc3RkOjpjb3V0IDw8ICJDcmVhdGluZyBwMi4uLlxuIjsKICAgIC8vIHN0ZDo6cGFpcjxGb28sIEZvbz4gcDIoc3RkOjpwaWVjZXdpc2VfY29uc3RydWN0LCB0LCB0KTsKfQ==