Zastanawiam się, czy prawidłowo zrozumiałem emplace_back
C++ 0x emplace_back z non-copyable Rzeczy
#include <vector>
using namespace std;
struct Hero {
Hero(const string&) {}
Hero(const char*) {}
Hero(int) {}
// forbid a clone:
Hero(const Hero&) = delete;
Hero& operator=(const Hero&) = delete;
};
int main() {
vector<Hero> heros1 = { "Bond", "Hulk", "Tarzan" }; // ERR: copies?
vector<Hero> heros;
heros.emplace_back(5); // ERR: copies
heros.emplace_back(string("Bond")); // ERR: copies
heros.emplace_back("Hulk"); // ERR: copies
}
Tak więc, ja naprawdę zastanawiać, czy mam rozumieć emplace_back
niepoprawnie: I choć byłoby zapobiec zrobić kopię z Hero
, ponieważ tworzy element w miejscu.
Czy jest to błąd implementacji w moim g ++ - 4.7.0?
To już nie jest C++ 0x. Teraz jest tylko C++! ':)' –