静态常量和constexpr变量有什么区别?

8

我知道constexpr 变量可以在编译时使用,例如用于模板或静态断言。

但是如果我不想使用constexpr,我也可以使用static const

自从C++11/14引入了constexpr,它们之间的区别是什么?

constexpr int a = 3;
//AND
static const int a = 3;

谢谢!

看待这个问题的另一种方式是哪一个应该使用?


5
这很大程度上取决于您在哪里声明。在不同的位置上,"static"限定符具有不同的功能。 - Some programmer dude
constexpr 也适用于非 int 类型。 - Kerrek SB
4
就字面意思而言,const 也是如此。 - R. Martinho Fernandes
@R.MartinhoFernandes: struct Foo { static const double x = 1.5; }; - Kerrek SB
1个回答

10

我知道的主要区别是,constexpr 的值必须在编译时已知,而 const static 可以在运行时分配。

const static int x = rand();

好的,对于我写的用法来说没有区别,这只是针对动态初始化变量的(比如第一次评估函数作用域时)? - dzada

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接