У меня есть код, похожий на этот:
class AClass {
public:
struct AStruct { };
AClass(){}
private:
const AStruct m_struct;
};
int main() {
AClass a;
}
Он выдает эту ошибку компиляции (с Clang LLVM версия 5.1):
error: constructor for 'AClass' must explicitly initialize
the const member 'm_struct'
Если я укажу конструктор по умолчанию для С++ 11 для struct AStruct
, я получаю ту же ошибку:
struct AStruct {
AStruct() = default;
};
Однако это решается путем написания конструктора с пустым телом:
struct AStruct {
AStruct(){} // fixed
};
Почему мне нужно указывать пустой конструктор? Разве это не автоматически создается с открытым доступом для структур?
Почему конструктор по умолчанию С++ 11 не решает проблему?