constexpr

    0热度

    1回答

    以下问题是从更大的代码中压缩的。因此,某些表达式似乎是过度杀伤或不必要的,但对原始代码至关重要。 考虑有一个结构,其中包含编译时间常数和一个简单的容器类: template<typename T> struct CONST { static constexpr T ONE() { return static_cast<T>(1); } }; tem

    13热度

    2回答

    可以说你有一个函数可以为你的应用程序产生一些安全令牌,比如一些散列盐,或者可能是对称密钥或非对称密钥。 现在让我们说,你在你的C++为constexpr有这个功能,你基于部分信息,供您构建功能键(比如,内部版本号,时间戳,别的东西)。 你是一个勤奋的程序员确保,并在适当的方式把这种以确保它只是被称为在编译的时候,这样的死脱去除最终的可执行代码。 但是,你永远不能肯定,别人是不会调用它以不安全的方式

    17热度

    2回答

    根据this,与constexpr声明的函数必须满足几个要求,其中之一是如下: 存在至少一个参数值使得函数的调用可以被评估核心常量表达式的子表达式... 好,constexpr功能可以没有参数: constexpr int Bar(/* empty */) { return 0xFF; } constexpr int value = Bar(); // Valid expression co

    3热度

    1回答

    我的编译器不支持if constexpr,但我被它的好处所吸引。 我必须拥有它 - 即使它可能是假的。 此代码是我试图模仿if constexpr的行为。 目的是使线(###)仅出现在1个功能: - #include <iostream> using namespace std; template<bool Flag,typename F> constexpr typename std::e

    8热度

    1回答

    这是Detecting constexpr with SFINAE的后续问题。 我想检测一个元组(或任何可以与std::get一起使用)的元素是否是constexpr。所以我写了类似于XEO提供了以下助手: template<size_t> struct sfinae_true : std::true_type{}; template<size_t N, class T> auto chec

    -2热度

    1回答

    我想声明一个constexpr,它会引发编译错误。 static constexpr float goBaseMovementSpeed = (1.135f/440.f); 这条线为什么不起作用? 错误C2144:语法错误:'float'应该以';'开头, 错误C4430:缺少类型说明符 - 假定为int。注:C++不支持default-int goBaseMovementSpeed是类的成员

    10热度

    1回答

    根据n4487和其他C++ 17引用,将会有新的lambda函数说明符 - constexpr,如果存在“明确指定函数调用运算符是constexpr函数”。。我理解lambda表达式的动机。什么是对我有意思的是,提议的第4点规定: 4)如果constexpr说明符的拉姆达说明符中省略,函数调用运算符(或模板)为constexpr是否会满足要求一个constexpr功能。 这使我两个问题: 为什么我

    9热度

    2回答

    问题:是否有可能通过将参数传递给内部constexpr函数(可能带有某种“完美转发”)来评估函数内部的常量表达式? 例子: constexpr size_t foo(char const* string_literal) { return /*some valid recursive black magic*/; } void bar(char const* string_lite

    1热度

    1回答

    我这是在VS2015产生奇怪的行为非常简单的项目: #include "Vec2f.h" #include "StaticRendercomponent.h" int main(int argc, char** argv) { constexpr Vec2f position(0.0f, 0.0f); constexpr PhysicsComponent compone

    8热度

    1回答

    我试图做一个简单的LookupTable中基于整数数组,这里的想法是有它在编译时计算上。 试图使它可以用于我可能有的各种整数类型的任何其他未来表格,我可能需要它,我需要它作为模板。 所以我有一个LookUpTable.h #ifndef LOOKUPTABLE_H #define LOOKUPTABLE_H #include <stdexcept> // out_of_range tem