当且仅当结构是模板时,似乎允许我使用未初始化的成员显式默认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
答案 0 :(得分:0)
当且仅当
让我告诉你数学家的答案。没有。试图将IIF应用于1300页文档是NP难题。
这是对的吗?
你的程序无论如何都是无效的。
[dcl.init / 7]如果一个程序要求默认初始化一个 const限定类型
T
的对象,T
应为具有a的类类型 用户提供的默认构造函数。
无论是否是模板都无关紧要。