constexpr相关内容
这个问题似乎与现有的问题有关,但是我不理解答案(涉及 const auto this_ = this; ),而且我认为以下示例更容易理解。 我正在使用以下C ++ 17代码段(实时演示): #include 结构测试{ const char * name_ {nullptr}; const Test * src_ {nullptr}; con
..
我有一个 static_loop 构造 模板 void static_loop(F& f){ static_assert(n = 8) f(std :: integral_constant()); 如果constexpr(n> = 7
..
此问题是对 C ++ 17的后续问题:仍使用枚举作为常量?。 旧式常量有几种形式,尤其是: #define CONSTANT x enum {CONSTANT = x}; const / * int / unsigned / whatever * / CONSTANT = x; 关于静态constexpr 和 inline constexpr 常量的评论作为替换得到了我在考虑
..
为什么 constexpr 不适用于 std :: cout ,但可以用于 printf ? #include constexpr void f(){std :: cout
..
要测试某些多维结构,需要生成编译时多维索引以完全涵盖所有可能的情况。 我正在寻找编译时廉价的方法来达到上述目的。 我目前正在做什么: #include #include 模板 结构枚举器; 模板 struct枚举器
..
#include 模板 结构节点{ T值; node const *上一页; constexpr节点(常量T&值,节点const * prev = nullptr) :值{value},prev {prev} {} constexpr节点push_front (const T& value)const { retur
..
假设我有一个模板类 template class foo { T m; decltype(auto)f(){return m.f(); } }; 如何给 foo:f()仅在 T :: f()是constexpr时使用constexpr说明符? 解决方案 您只需在其上拍一个 constexpr : constexp
..
回答此问题后,阅读本演讲并查看此代码,我想实现 constexpr使用简单的数组类查找。 请考虑以下示例: #include 模板 constexpr auto constexpr_find(const It& b,const It& e,T value){ auto begin = b; while(begi
..
在 Wiki 中找到以下语句: C ++ 11引入了constexpr声明的函数的概念; 函数,可以在编译时执行。它们的返回值 可能需要常量表达式 的操作(例如整数模板参数)占用。但是,C ++ 11 constexpr 函数只能包含一个返回的表达式(如 以及static_asserts和少量其他声明)。 C ++ 14放宽了这些限制。 Constexpr声明的函数现在可能
..
我不明白将setter函数标记为 constexpr 的目的,自C ++ 14开始就允许这样做。 我的误解来自于下一种情况: 我声明了一个带有constexpr c-tor的类,并且通过在该类中创建一个constexpr实例,我将在constexpr上下文中使用它 constexpr点p1 。对象 p1 现在是常量,并且其值无法更改,因此无法调用 constexpr 设置器。 另一方面,当我
..
我想将 bool 的“数组”转换为整数序列。 所以我需要在编译时计算一个 std :: array 。 这是我的代码 #include template 内联constexpr类型名称std :: iterator_traits :: difference_type cou
..
说我有一个可以通过 constexpr 函数返回常量表达式的类: template struct Foo { constexpr int Bar()const {return N; } }; 如果我想从 Foo :: Bar(),我应该如何传递 Foo 类型的参数?我已经尝试了这两个,并在每个变量中都使用示例 constexpr 变量来测试其是否可
..
尽管我以前使用过这样的代码,并且很明显编译器具有足够的信息来工作,但我并不真正理解为什么编译: template auto foo(const T& t,I i){ return std :: get(t); } int main() { std :: cerr
..
使用C ++ 14。为什么会这样编译: template constexpr bool foo() { std :: array arr; 返回true; } 但不是这个吗? constexpr bool foo() { std :: array arr; //非常量表达式构造函数“
..
#include 使用命名空间std; constexpr int f(bool b){return b?抛出0:0; } // OK constexpr int f(){return f(true); } //格式错误,无需诊断 int main(){ try { f(); } catch(int x){ cout
..
Howard Hinnant在标准论文P0092R1中写道: template {}>> constexpr 到楼下(const duration(d
..
const-vs-constexpr-on-variables 如果使用double ,那家伙对constexpr的说法是正确的($code>(或者当然是 float )。但是,如果将var类型从 double 更改为int,char等整数类型,则一切正常。为什么会发生这种情况? http://ideone.com/ DAWABE int main() { const in
..
设置: 我有一个使用SIMD内部函数的函数,想在某些constexpr函数中使用它。 为此,我需要将其设为constexpr。但是,SIMD内部函数未标记为constexpr,并且编译器的常量评估器无法处理它们。 我尝试用功能相同的C ++ constexpr实现替换SIMD内在函数。该函数在运行时变慢了3.5倍,但是我可以在编译时使用它(是吗?)。 问题 >: 如何
..
来自该问题: 如何构建用作constexpr(如assert)时行为不同的自定义宏? 我不知道为什么 void bla() { std :: cout不是constexpr! 条件?无效
..
我想尝试将项目从gcc迁移到clang ++。我承认自己很无知,我不确定为什么下面的代码 template constexpr T pi {std :: acos(T(-1.0))}; 使用g ++进行静默编译,但clang ++会产生错误 trig.hpp:3:13:错误:constexpr变量'pi'必须由常量表
..