constexpr相关内容

constexpr函数的未定义符号

当我尝试编译以下代码时,我得到一个链接器错误:架构x86_64的未定义符号:“Foo()”,引用自:main.o中的_main using LLVM 4.2。 此行为仅在函数标记为 constexpr 时才会发生。当函数标记为 const 时,程序会正确编译和链接。为什么声明函数 constexpr 导致链接器错误? (我意识到这样写函数doesn' t) main.cpp / ..
发布时间:2016-10-20 09:30:48 C/C++开发

constexpr const vs constexpr variables?

很明显,constexpr意味着const,因此它是常见的: constexpr int foo = 42; // no const here 但是如果你写: constexpr char * const str =“foo”; 然后GCC将生成“警告:从字符串常量到字符串常量的转换为'char *'”if -Wwrite -string标志被传 ..
发布时间:2016-10-20 09:28:05 C/C++开发

CRTP编译错误

以下将使用GCC 5.2进行编译,但不能与Visual Studio 2015一起编译。 template struct CRTP { static constexpr int num = Derived :: value + 1; }; struct A:CRTP { static constexpr int value = ..
发布时间:2016-10-19 20:54:55 C/C++开发

C ++ 0x错误与constexpr和返回模板函数

我试图找到问题的解决方案 C ++模板非类型参数类型推导,它不涉及调用f的模板参数,但隐含地为模板参数选择正确的类型。 由于 constexpr 应该保证函数只包含编译时常量,并在编译时评估(至少是我认为它是),我认为这可能是这个问题的解决方案。 所以我想出了这个: 模板 ..
发布时间:2016-10-19 20:07:21 C/C++开发

如何确保constexpr函数从未在运行时调用?

假设您有一个函数为您的应用程序生成一些安全令牌,例如一些哈希盐,或者一个对称或不对称的键。 现在让说你在你的C ++中有这个函数作为一个constexpr,并根据一些信息(例如,内部版本号,时间戳,别的东西)生成你的构建的密钥。 你是一个勤奋的程序员,确保并以适当的方式调用它,以确保它只在编译时被调用,因此死去除器从最终可执行文件中删除代码。 但是,你永远不能确定别人不会以不安全 ..
发布时间:2016-10-17 11:03:45 C/C++开发

用户定义的文字参数不是constexpr?

我测试用户定义的文字。我想让 _fac 返回数字的阶乘。 让它调用 constexpr 函数工作,但它不让我做模板,因为编译器抱怨的参数不是,不能 constexpr 。 / p> 我很困惑这 - 不是字面量常量表达式?在 5_fac 中的 5 始终是一个可以在编译时评估的文字,所以为什么不能使用 constexpr int factorial_function(int x){ ..
发布时间:2016-10-17 10:13:00 C/C++开发

函数返回的constexpr不会编译

为什么不编译: 将 string 作为返回类型会出现问题吗? constexpr std :: string fnc() { return std :: string(“Yaba”); } 解决方案 std :: string 指向 char 的指针不是 constexpr 。在 constexpr 函数中,只能使用 constexpr 的函数。 ..
发布时间:2016-10-17 10:06:14 C/C++开发

g ++ c ++ 11 constexpr评估性能

g ++(4.7.2)和类似的版本似乎在编译期间令人惊讶地评价constexpr。在我的机器上,事实上比编译程序在运行时快得多。 这种行为有合理的解释吗? 是否有优化技术,只有 适用于编译时,可以比实际编译代码更快执行? 如果是这样,哪个? 这里是我的测试程序和观察结果。 #include constexpr int mc91(int n) ..
发布时间:2016-10-17 10:03:00 C/C++开发