【发布时间】:2020-12-08 19:46:33
【问题描述】:
我真的无法在任何地方在线找到解决方案。在 C++11 之前,我有点像恐龙,我无法确定要对 constexpr 进行类型转换。
有谁知道如何将 C 风格的数组和/或 std::vector(整数)元素转换为 constexpr?
也就是说,让我们说
int a[]={1,2};
vector<int> v={1,2};
如何将a[1] 和v[1] 转换为constexpr?
constexpr int b=a[1];
例如,编译器会在 for 循环中报错。
error: the value of ‘a’ is not usable in a constant expression constexpr int b=a[i];
我目前几乎没有想法。谢谢
【问题讨论】:
-
你不能。只有constant expressions 可以分配给
constexpr变量。 -
你需要一台时间机器来将一个仅在运行时知道的值转换为在编译时已知的值
-
你不能,请查看 cppreference (en.cppreference.com/w/cpp/language/constexpr) "一个 constexpr 变量必须满足以下要求:它的类型必须是 LiteralType。它必须立即初始化它的完整表达式初始化,包括所有隐式转换、构造函数调用等,必须是常量表达式“
-
AdabH,我刚刚做到了。哇.. 自 2017 年以来情况发生了很大变化...
-
您能告诉我们您通过将动态值转换为 constexpr 来解决什么问题吗?
标签: c++ arrays c++11 constexpr