【发布时间】:2015-05-29 10:55:15
【问题描述】:
我有一个非常简单但无法编译的函数。
constexpr void func()
{
}
我得到的错误是:
错误:constexpr函数“constexpr void func()”的无效返回类型“void”constexpr void func()
在 C++14 中,void 是文字类型 [§3.9/10]:
一个类型是一个文字类型如果它是:
- 无效;或
- 标量类型;或
- 引用类型;或
- 文字类型的数组;或
- 具有以下所有属性的类类型(第 9 条):
- 它有一个微不足道的析构函数,
- 它是一种聚合类型 (8.5.1) 或至少有一个
constexpr构造函数或构造函数模板不是复制或移动构造函数,并且- 它的所有非静态数据成员和基类都是非易失性文字类型。
有人可以解释为什么这是无效的吗?
【问题讨论】:
-
Void as a literal type? 的可能重复项
-
引用 C++14 后的工作草案对于证明有关 C++14 的事实并不是很有用。
标签: c++ language-lawyer c++14 return-type constexpr