constexpr相关内容
由于 constexpr 的扩展版本(我认为是C ++ 14),因此可以声明 constexpr 函数,可以用作“真实的”。 constexpr 。即,代码在编译时执行,或者可以充当内联函数。因此,什么时候可以使用此程序: #include constexpr int foo(const int s){ return s + 4; } int ma
..
我使用三维 std :: array ,因为在编译时已经知道大小。但是,我注意到size()函数不是静态的,因此constexpr / template函数无法访问。 我已经找到下面的演示示例,该示例估计一维 std :: array 的大小。但是,这不适用于两个或多个维度。有没有一种方法可以通过为 x,y,z,...编写带有附加模板参数 dim 的函数来返回其他维度。 code>维?
..
我有一个数学函数,希望能够接受双精度数或双精度数的数组/向量/容器,并且行为略有不同。 我正在尝试使用SFINAE并键入traits选择正确的函数。 这里是一个最小的示例: #include #include #include 模板 constexpr bool Is
..
编译时: constexpr double x {123.0}; constexpr double y = x / 0.0; std :: cout
..
以下代码无法编译: // template struct S { int g()const { 返回0; } constexpr int f()const { return g(); } }; int main() { S / * int ** / s; auto z = s.f(); } GCC,例如,抱怨: e
..
我有4个测试用例,并且我相信它们都是有效的: constexpr int f(int const& / *未使用* /){ 返回1; } void g(int const& p){ constexpr int a = f(p); // lang错误,gcc有效 int v = 0; constexpr int b = f(v); // clang有效,gcc有效
..
我试图找到一个与constexpr兼容的哈希函数,以用于在编译时对字符串进行哈希处理。字符串的数量确实很少(小于10),而且我需要单独检查冲突,因此该算法可能远非完美。我在互联网上的某个地方找到了以下版本的FNV1A: 静态constexpr unsigned int Fnv1aBasis = 0x811C9DC5; static constexpr unsigned int Fnv1a
..
因此,我将其简化为最小,完整,可验证的示例,并且似乎Visual Studio 2015不允许我使用模板化的 constexpr 函数在 enable_if 中。 例如: 模板 constexpr bool condition(){return sizeof(T)> 1; } 给我错误: 错误C2995: enable_
..
问题:是否可以通过将其参数传递给内部constexpr函数来对函数内部的常量表达式求值? 示例: constexpr size_t foo(char const * string_literal){ 返回/ *一些有效的递归黑魔法* /; } void bar(char const * string_literal){ //可以正常工作 constexpr auto a =
..
首先,我们有以下代码用于在编译时累积 constexpr std :: array : template constexpr T compile_time_accumulator(const std :: array const& A,const std :: size_t i,const O&
..
在Mike Isaacson的“探索C ++ 17及更高版本”中的演讲中( https ://youtu.be/-ctgSbEfRxU?t = 2907 )关于写作存在疑问: const constexpr .... vs单个常量。 Mike表示,在C ++ 11中constexpr隐含const,而在C ++ 14中则不隐含。 是真的吗? 我试图找到证明,但是我做
..
这项工作: template struct Something {static constexpr const char * str =“ int”; }; int main() {std :: cout :: str
..
我正在尝试在编译时使用其某些索引来初始化std :: bitset ,例如将50-75和200-225设置为1。 基于 http://en.cppreference.com/w/ cpp / utility / bitset / bitset 看来我的2个选项是: constexpr bitset( ); constexpr bitset(unsigned long long
..
#include constexpr size_t constLength(const char * str) { return(* str == 0)? 0:constLength(str + 1)+ 1; } int _tmain(int argc,_TCHAR * argv []) { const char * p =“ 1234567”;
..
我正在用C ++写一个微处理器仿真器,我的目标之一是使它的代码可读性强。为了实现操作码,我有一个用来表示单个处理器指令的结构,它同时包含操作码和程序计数器的前进距离。 struct指令 { const int opcode;。 //指令操作码 const int op_size; //将计划计数器 推进多远}; const指令HALT {0x76,1}; const指令N
..
由于标准的困扰,C ++中的静态类成员对我造成了一些困惑: 9.4.2静态数据成员 [class.static.data] 在其类定义中声明静态数据成员不是定义... 但是在其声明时(例如,在 constexpr 中需要初始化 constexpr ) 由于对constexpr的限制,我实际上已经忘记了在类外定义静态成员的必要条件,直到尝试访问静态constexpr数组为止。
..
我正尝试学习更多有关如何在实践中使用C ++常量表达式的知识,并创建了以下Matrix类模板用于说明: #include 模板 类矩阵{ public: 使用value_type = T; constexpr Matrix():{} 〜Matrix(){} constexpr
..
C ++ 17更新: 静态constexpr 变量隐式地 inline 因此不需要外部定义。 原始问题: 假设我有一个常量列表,例如 struct Cls { 静态constexpr int N = 32 ; 静态constexpr int M = 64; }; 这当然表明我为它们添加了定义,以避免可能发生的ODR使用问题,所以我需要: con
..
这些可能应该在不同的问题中,但是它们是相关的…… 为什么我们要写 constexpr 呢?给定一组限制,编译器无法评估代码以查看其是否满足 constexpr 的要求,并将其视为 constexpr 是否这样做?作为纯粹的文档关键字,我不确定它是否成立,因为我无法想到我(其他人 constexpr 函数)应该真的在乎它是否在运行。 这是我的逻辑:如果这是一个昂贵的函数,我认为按照惯例,
..
这是此主题的某种后续版本,并涉及了它的一小部分。与上一个主题一样,让我们考虑一下,我们的编译器对 std :: initializer_list 和 constexpr 函数c> std :: array 。现在,让我们直接说清楚。 这行之有效的: #include #include int main() {
..