Mögliche Duplizieren:
C++11 emplace_back on vector<struct>?emplacing einen POD
Ist Einlagerungs möglich mit PODs? Es scheint nicht 2012 in Visual Studio zu arbeiten:
struct X
{
int a;
int b;
};
void whatever()
{
std::vector<X> xs;
X x = {1, 2};
// okay
xs.push_back(x);
// okay
xs.emplace_back(x);
//error C2661: 'X::X': error C2661: no overloaded function takes 2 arguments
xs.emplace_back(1, 2);
}
Ist das nur ein Manko von Visual Studio 2012 oder ein POD einfach nicht in sich emplacing C++ 11?
Es baut es an Ort und Stelle. Es gibt keinen solchen Konstruktor. – chris
Ich würde es nicht definitiv betrachten, aber g ++ (4.7.1) akzeptiert es auch nicht. –
Ich denke, Sie müssen wahrscheinlich einen Konstruktor für 'X' haben, der zwei Argumente benötigt (wie die Fehlermeldung suggeriert). –