似乎只有在struct是模板的情况下,才允许使用未初始化的成员显式地默认constexpr默认构造函数。即使模板结构被实例化也是如此。
它是否正确?
示例:
struct SFoo
{
constexpr SFoo() =default; // disallowed
int x;
};
template <typename tTYPE>
struct SBar
{
constexpr SBar() =default; // accepted
int x;
};
int main(int argc, char const* const argv[])
{
SBar<int> bar; // also accepted
constexpr SBar<int> bar2; // disallowed (correctly)
return 0;
}
LLVM输出:
3:3: error: defaulted definition of default constructor is not constexpr
constexpr SFoo() =default;
LLVM和GCC都拒绝
SFoo
并接受SBar
最佳答案
让我给你数学家的答案。否。尝试将IIF应用于1300页的文档是一个NP难题。
那么您的程序无论哪种方式都是无效的。
不管是否是模板都没有关系。
关于c++ - 具有未初始化成员的struct的constexpr默认构造函数仅在模板化时有效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37245834/