标签: c++ c++11
在默认构造函数的定义中,= default;与{ }完全相同吗?是否存在可能具有不同含义的情况?
= default;
{ }
样本伪代码:
template<typename... Args> struct S // maybe with base classes { S() = default; // S() {} - same or different? // other stuff... };
答案 0 :(得分:8)
他们是不同的。截至S() {},S被视为具有用户提供的构造函数,而S() = default;则没有。例如,这有助于S是否有资格作为聚合类型。请参阅here。
S() {}
S
S() = default;