问题标签 [constexpr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何在 constexpr 函数中有一个临时变量?
这是我想做的简化版本。
在我的版本中,a+b 要复杂得多,所以我不想剪切和粘贴 3 次。使用 3*(a+b) 也不是实际功能的有效解决方案。我试图让问题与语法相关,而不是代数。我可以通过将 a+b 移动到它自己的 constexpr 函数来让它工作,但我宁愿不要用其他无用的函数污染命名空间。
c++ - 静态 const getter 的内联 vs constexpr?
在下面的代码中,什么函数可以为外部使用提供最佳优化,为什么?C++ 2011 中是否允许“版本 4”?
非常感谢你。
c++ - 与正在定义的类相同类型的静态 constexpr 成员
我希望 C 类有一个 C 类型的静态 constexpr 成员。这在 C++11 中可能吗?
尝试1:
g++ 4.7.0 说:“不完整类型的无效使用”指的是Foo()
调用。
尝试2:
现在的问题是类定义中的constexpr
成员缺少初始化程序。f
尝试 3:
现在 g++ 抱怨重新声明Foo::f
了constexpr
.
c++ - 数组声明中的常量表达式
数组维度必须在编译时已知,这意味着维度必须是常量表达式
一个单独的观点是
我会,然后期望以下声明失败
然而,事实并非如此。编译并运行良好。
同样奇怪的是,++count;
数组声明之后也没有引起任何问题。
-std=c++11
使用标志编译的程序g++4.71
这是为什么?
c++ - C++11:数组的编译时间计算
假设我有一些 constexpr 函数 f:
而且我在编译时知道一些 const int N :
任何一个
或者
根据您的回答需要。
我想要一个 int 数组 X:
这样函数在编译时就被评估,X 中的条目由编译器计算,结果被放置在我的应用程序映像的静态区域中,就好像我在我的 X 初始化器列表中使用了整数文字一样。
有什么办法可以写这个吗?(例如使用模板或宏等)
最好的:(感谢 Flexo)
c++ - 用于编译时数学函数的 constexpr vs 模板?
我对 C++2011 的新关键字 constexpr 感到很困惑。当我编写编译时函数(尤其是数学函数)时,我想知道在哪里使用 constexpr 以及在哪里使用模板元编程。例如,如果我们采用整数 pow 函数:
第二个和第三个功能是等效的吗?什么是最好的解决方案?它是否产生相同的结果:
- 如果 x 在编译时已知
- 如果 x 在编译时未知
何时使用 constexpr 以及何时使用模板元编程?
编辑 1:修改代码以包括模板的专业化
c++ - numeric_limits 是 min/max constexpr 吗?
C++11 标准是否指定numeric_limits<T>::min
andmax
必须是可以在模板中使用的常量表达式或static_assert
?
更一般地,如何根据标准找到常量表达式的函数列表?
c++ - 具有三元的简单 C++11 constexpr 阶乘超过最大模板深度
如果我使用专业化编写编译时阶乘函数,则以下代码就足够了,并且将正确提供 120 作为结果fact1<5>()
:
但是,对于单个函数体和三元运算符,如下面的代码所示,G++ 4.7 和 Clang++ 3.2 都超过了它们的最大模板实例化深度。似乎1
永远不会从fact2
. 为什么这个定义fact2<5>()
不返回 120?
c++ - 为什么 constexpr 与模板一起使用?
考虑以下代码:
这编译得很好。但为什么会这样?理论上,constexpr 函数只能调用其他的 constexpr 函数。但是,不能保证运算符将是 constexpr 函数。例如,假设我有一些具有以下接口的类型:
运算符 + 和 *不是constexpr。如果我编写以下代码:
它应该无法编译,因为 constexpr 函数正在调用非 constexpr 函数。但它编译得很好。为什么是这样?
我正在使用带有 -std=c++0x 选项的 MinGW 的 G++ 编译器。
c++ - 在编译时常量中下标字符串文字
可能重复:
字符串文字可以在常量表达式中下标吗?
如果我下标字符串文字,结果是编译时常量吗?换句话说,以下代码是否有效?
GCC 4.7 说它是,但是标准在这个问题上必须说什么?
对于好奇的人:我不能只写'a'
,因为字符串文字是字符串化运算符的结果。一些编译器确实有一个字符化运算符,但它只是一个扩展。