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
未使用參數2
和3
構造Foo
?如果Foo
構造函數有1個參數,則上述樣式有效。
我使用的是不是最新的gcc 4.9.2。有沒有人認爲上面的代碼會在以後的編譯器中編譯?
參見[這](http://stackoverflow.com/q/27960325/241631),可能是重複的 – Praetorian