C++ Can变量<;int,string>;是康斯特普吗?
发件人: 当且仅当替代类型T_0的值初始化满足constexpr函数的要求时,此构造函数为constexprC++ Can变量<;int,string>;是康斯特普吗?,c++,c++17,variant,C++,C++17,Variant,发件人: 当且仅当替代类型T_0的值初始化满足constexpr函数的要求时,此构造函数为constexpr 上面没有提到变量中的其他类型,因此声明constexpr variant v是否有效?您的引用并不意味着声明constexpr variant v是有效的。引用N4140(大致上是C++14而不是C++1z,但概念没有改变): 7.1.5 constexpr说明符[dcl.constexpr] 9对象声明中使用的constepr说明符将对象声明为const。此类对象应具有文字类型,并应初
上面没有提到变量中的其他类型,因此声明
constexpr variant v如果变量必须有一个非平凡的析构函数,代码>是否有效?您的引用并不意味着声明constexpr variant v代码>是有效的。引用N4140(大致上是C++14而不是C++1z,但概念没有改变):
7.1.5 constexpr说明符[dcl.constexpr]
9对象声明中使用的constepr
说明符将对象声明为const
。此类对象应具有文字类型,并应初始化。如果由构造函数调用初始化,则该调用应为常量表达式(5.19)。[……]
如果构造函数调用是常量表达式,则声明无效,类型也必须是文本类型。literal类型的一个要求是它们具有平凡的析构函数。您的引用并不意味着声明constexpr variant v代码>是有效的。引用N4140(大致上是C++14而不是C++1z,但概念没有改变):
7.1.5 constexpr说明符[dcl.constexpr]
9对象声明中使用的constepr
说明符将对象声明为const
。此类对象应具有文字类型,并应初始化。如果由构造函数调用初始化,则该调用应为常量表达式(5.19)。[……]
如果构造函数调用是常量表达式,则声明无效,类型也必须是文本类型。文字类型的一个要求是它们具有平凡的析构函数