51得票3回答
指定构造函数为constexpr是否会自动使得从它创建的所有对象都是constexpr的?

这是我的代码: class test { public: constexpr test() { } constexpr int operator+(const test& rhs) { return ...

48得票5回答
正在定义的类的静态constexpr成员与该类相同的类型。

我想让一个类C拥有一个类型为C的静态constexpr成员。在C++11中是否可能实现? 尝试1:struct Foo { constexpr Foo() {} static constexpr Foo f = Foo(); }; constexpr Foo Foo::f; ...

48得票3回答
编译时间如何比运行时间(指数级)更快?

以下代码使用一种指数级慢算法计算斐波那契数列:#include <cstdlib> #include <iostream> #define DEBUG(var) { std::cout << #var << ": " << (var...

47得票1回答
在编译时获取静态constexpr数组的最小/最大值

假设我有一个整数数组定义如下:static constexpr int IntArray[] = {1, 5, 10, 12, 17}; 是否有一种方法可以在编译时获取最小或最大值?

47得票4回答
VC2013中的constexpr无法编译

这段constexpr代码在Visual Studio 2013版本12.0.21005.1 REL中无法编译。是否有更新的Visual Studio编译器支持constexpr?#include <iostream> constexpr int factorial(int n)...

47得票3回答
绕过reinterpret_cast限制的constexpr方法

在C++11中,constexpr表达式不能包含reinterpret转换。因此,例如,如果想要操作浮点数中的位,比如找到数字的尾数:constexpr unsigned int mantissa(float x) { return ((*(unsigned int*)&x ...

47得票3回答
如何在编译时获取多维std :: vector的深度?

我有一个函数,它接受一个多维的 std::vector,并需要作为模板参数传递其深度(或者说是维度数)。但是我不想硬编码这个值,我希望编写一个 constexpr 函数,它将接受 std::vector 并返回深度作为无符号整数。 例如:std::vector<std::vector&...

46得票3回答
内联函数与constexpr函数有什么区别?

使用新的C++11标准时,什么情况下应该使用inline关键字而不是constexpr关键字? constexpr关键字是否比inline提供任何额外的优化,还是仅仅声明必须在编译时计算这些内容? 为什么constexpr在某些情况下可以在GCC上工作,即使调用不是常量,例如对非const...

45得票1回答
GCC接受`constexpr struct {} s;`,但Clang拒绝。谁是正确的?

以下代码可以在GCC编译器下编译通过。constexpr struct {} s; 但是,Clang拒绝它并显示以下错误: error: default initialization of an object of const type 'const struct (anonymous...

45得票4回答
constexpr是否意味着noexcept?

对于一个函数,constexpr说明符是否意味着noexcept说明符?答案到类似的问题表示在inline说明符方面是肯定的,但Eric Niebler的文章让我想知道当前问题的可能答案。在我看来,答案取决于使用constexpr函数的上下文:它是常量表达式上下文还是运行时上下文,即函数的所有...