Рассмотрим следующий код:
#include <iostream>
#include <vector>
struct C {
std::vector<int> a;
std::string b;
bool c;
};
void printC(const C &c) {
// ...
}
int main() {
printC({
{ 1, 2, 3 },
"ehlo",
false
});
}
Это работает, потому что компилятор может генерировать правильный конструктор для меня.Но если я изменю struct C на это:
struct C {
std::vector<int> a;
std::string b;
bool c;
C() {
c = false;
}
};
Вызов printC перестает работать, потому что компилятор прекращает генерировать соответствующий конструктор.Я пытался написать себе конструктор, используя std :: initializer_list, но потерпел неудачу.
Итак, вопрос в том, как написать конструктор, который заставит вышеуказанный код компилироваться и работать снова?