C++ Can变量<;int,string>;是康斯特普吗?

C++ 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。此类对象应具有文字类型,并应初

发件人:

当且仅当替代类型T_0的值初始化满足constexpr函数的要求时,此构造函数为constexpr


上面没有提到变量中的其他类型,因此声明
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)。[……]

如果构造函数调用是常量表达式,则声明无效,类型也必须是文本类型。文字类型的一个要求是它们具有平凡的析构函数