Tôi tự hỏi nếu tôi hiểu đúng emplace_back
C++ 0x emplace_back với mục phi copyable
#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
}
Vì vậy, tôi thực sự tự hỏi Nếu tôi hiểu sai emplace_back
: Tôi mặc dù nó sẽ ngăn chặn để tạo một bản sao của Hero
, bởi vì nó tạo mục tại chỗ.
Hoặc là lỗi triển khai trong g ++ - 4.7.0 của tôi?
Không còn C++ 0x nữa. Nó chỉ là C + + ngay bây giờ! ':)' –