struct Foo {
Foo(int a, int b) : a_(a), b_(b) {}
int a_;
int b_;
};
int main()
{
vector<Foo> vec;
vec.emplace_back(1, 2);
}
The above code compiles since emplace_back constructs the Foo object in place.
int main()
{
map<int, Foo> m;
m.emplace(1, 2, 3);
}
The above code does not compile. Why does emplace
not construct Foo
in place using args 2
and 3
? If Foo
constructor has 1 arg, the above style works.
I am using gcc 4.9.2 which is not the latest. Does anyone think the above code would compile in later compilers ?