У меня есть класс контейнера, подобный этому
class Container {
public:
Container(const std::string name, const double value)
: name(name), value(value),{};
const std::string name;
const double value;
};
и мне нравится инициализировать const std::vector<Container>
.
Это
const std::vector<Container> sets{{"foo", 0}, {"bar", 1}};
отлично работает, используя компилятор intel (версия 15.0.3 (совместимость с gcc версии 4.8.2)) и c ++ 11 enable (-std=c++11
), это работает с RedHat6, но не работает под Windows7. Компилятор такой же, но интерфейс - visual studio 2013.
Я получаю сообщение об ошибке:
no operator "=" matches these operands
operand types are: Container = Container
_Right = _Move(_Tmp);
Нужно ли мне писать свой собственный конструктор копирования?
Полный пример:
#include <vector>
#include <string>
class Container {
public:
Container(const std::string name, const double value) : name(name), value(value){};
const std::string name;
const double value;
};
int main() {
const std::vector<Container> sets{{"foo", 0.0},{"bar", 1.0}};
}