constexpr是C ++ 11中引入的修饰符,它通知编译器函数或变量的值是已知的,或者可以在编译时计算。因此,它可以在不可能的地方用作常数。
通过引用调用`constexpr`成员函数-clang vs gcc
请考虑以下示例(摘要(0)):struct X {constexpr int get()const {return 0; };无效foo(const X&x){constexpr int i = x.get(); } int main(){foo(X {}); } ...
我有一个头文件,其中字符串定义为静态全局。命名空间[{define NAME(P)static std :: string const s _ ## P = #P NAME(foo); NAME(栏); // ...其他值#undef NAME} ...
我有一个矢量实现,并试图将存储的值T放入包装器中。包装器具有与T相同的内存布局,因此在T *上执行数组索引/指针算术似乎可以工作...
[这是我的头个难题,但它对const有效,但对constexpr不起作用,我想知道您是否聪明的人可以解释。与g ++ -std = c ++ 14一起编译。 struct Service {std :: string name; ...
我这里有一个函数可能是constexpr的情况。通常,只有在上下文允许的情况下,才添加constexpr并使用常量评估。但是以下代码...
由于constexpr不能保证它会在“编译时”被处理,因此我想知道一些方法来检查我的代码是否在编译时已被完善。假设我...
是否需要更多constexpr容器使用mark_immutable_if_constexpr?
接受的C ++ 20提案“更多constexpr容器”(P0784)中的第一个代码示例使用函数std :: mark_immutable_if_constexpr。该功能是否被接受为同一提案的一部分?我看到了...
gcc v10和v9之间的constexpr区别:错误或功能
如果使用gcc v10编译,下面的代码将显示错误,但对于gcc v9,该代码可以。 template struct A {constexpr auto size()const {return N; };模板
我编写了以下宏来模仿C#的nameof运算符,但在C ++ / CLI中:#define nameof(x)(#x)if(info == nullptr)throw gcnew ArgumentNullException(nameof(info));我尝试过...
我有以下宏,并希望将其转换为constexpr,因为显然这是一种更好的方法:#define INT32BE(x)(x [0] << 24 | x [1] << 16 | x [2] < <8 | x [3])尝试:...
在C ++中,我试图编写类似于boost-mp11的mp_for_each的内容。但是,虽然mp_for_each总是为给定的mp_list 中的每个T调用提供的函数,但我正在尝试...
C ++ 17:在.cpp文件中定义静态constexpr成员函数
我有一个静态constexpr成员函数,该函数在.h文件中声明。如果我立即在头文件中定义该函数,则一切运行正常。我一般倾向于定义...
我想构建一个constepxr树结构,其中包含固定数目的子树(可能是树也可能不是树)。该结构将能够回答以下问题:“索引处是否存在节点...
有时会在constexpr上下文中使用的非constexpr变量吗?
请看下面的代码示例:template struct test {static const int value_a = val; const int value_b = val; constexpr int get_value_a()const noexcept {...
为什么reinterpret_cast不是constexpr?
请考虑以下代码段:static constexpr uint8_t a = 0;静态constexpr const int8_t * b = reinterpret_cast (&a);这无法通过错误进行编译:a ...
clang ++与g ++ constexpr的差异,带有超出范围的引用
我有constexpr std :: array v1 {0},v2 {0};表现得像大整数。因此,我编写了一个乘法函数来查找数字的乘积。 #include #include
用C ++创建两个值的并集/交集创建const集的标准方法?
假设我有constexpr std :: set a = {1,2,3}; constexpr std :: set b = {3,4,5};而且我想创建constexpr std :: set c = union(a,b); // {1,2,3,4,5}是...
如何在assert()和static_assert()之间分配,如果在constexpr上下文中依赖,则依赖?
在C ++ 11 constexpr函数中,不可能使用第二条语句,例如assert()。 static_assert()很好,但是如果该函数被称为“普通”函数,则将无法正常工作。逗号运算符...
我一直在尝试在编译时求值的const表达式。但是我玩了一个在编译时执行时看起来非常快的示例。 #include ... ...>