0
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);
}
위 코드는 emplace_back이 Foo 객체를 생성하기 때문에 컴파일됩니다.C++ map emplace
int main()
{
map<int, Foo> m;
m.emplace(1, 2, 3);
}
위의 코드는 컴파일되지 않습니다. 왜 emplace
은 args 2
과 3
을 사용하여 자리에 Foo
을 생성하지 않습니까? Foo
생성자에 1 개의 arg가 있으면 위 스타일이 작동합니다.
gcc 4.9.2를 사용하고 있습니다. 최신이 아닙니다. 누구든지 위의 코드가 나중에 컴파일러에서 컴파일 될 것이라고 생각합니까?
페이지의 [이] (http://stackoverflow.com/q을 수행 할 수 있습니다/27960325/241631), 아마도 중복 된 – Praetorian