Интересно, правильно ли я понял emplace_back
#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
}
Таким образом, мне действительно интересно, если я неправильно понял emplace_back
: я думал, что не позволит сделать копиюHero
, потому что он создает элемент на месте .
Или это ошибка реализации в моем g ++ - 4.7.0?