Nic*_*ick 5 language-lawyer constexpr c++11
如果你这样做:
constexpr int LEN = 100;
Run Code Online (Sandbox Code Playgroud)
LEN变量定义为const无需键入const关键字。
它还具有static存储功能,无需键入static关键字。
另一方面,如果我们在class:
struct A{
constexpr static int SIZE = 100;
};
Run Code Online (Sandbox Code Playgroud)
SIZE仍然定义为const不需要输入 const 关键字,
然而SIZE不是static数据成员。
您需要static明确键入。如果不这样做,将出现编译错误。
问题是:
需要显式输入的原因是什么static?
constexpr不应该暗示static,因为constexpr
没有static有意义。考虑:
#include <iostream>
struct Dim
{
constexpr Dim(int a,int b) : a(a), b(b) {}
constexpr int Prod() const { return a*b; }
int a,b;
};
int main()
{
constexpr Dim sz(3,4);
int arr[ sz.Prod() ];
std::cout << sizeof(arr) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
它也不应该暗示static类定义之外,因为static它意味着“翻译单元本地”并且constexpr
不需要这样。
| 归档时间: |
|
| 查看次数: |
909 次 |
| 最近记录: |