用于循环编译的 constexpr
constexpr for loop compilation
我已经读过这篇文章,但我仍然不知道如何使用-std=gnu++2a
我不确定如何使用整数序列。你能帮我调整下面的代码以便它编译吗?感谢
constexpr bool example(const int k)
{
return k < 23 ? true: false;
}
constexpr bool looper()
{
constexpr bool result = false;
for(int k = 0; k < 20; k ++)
{
for (int i = 0 ; i < k; ++i)
{
constexpr bool result = example(i);
}
}
return result;
}
int main()
{
constexpr bool result = looper();
return 0;
}
constexpr
与编译时已知的变量一起使用,如constexpr int i =1+2
。编译器可以在编译之前找出结果并使其恒定。
这里example(i);
,它使用了一个非常量变量并将其传递给一个采用const
变量的函数,您期望它如何工作?
而这个return k < 23 ? true: false;
可以写return k < 23 ;
如果要在编译时使用index_sequence
完成循环工作,可以使用如下所示的内容
#include <utility>
#include <iostream>
template<size_t ...i>
constexpr bool example(std::index_sequence<i...>){
return (false,..., (i < 23));
}
template< size_t...j>
constexpr bool helper(std::index_sequence<j...>)
{
return ((example( std::make_index_sequence<j>{})),...);
}
template< size_t n>
constexpr bool loop()
{
return helper(std::make_index_sequence<n>{});
}
int main()
{
constexpr bool result = loop<20>();
std::cout<<result;
return 0;
}
相关文章:
- 如何确认我的constexpr表达式实际上已经在编译时执行
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 用于循环编译的 constexpr
- 使用 constexpr 替换 #define 和 #ifdef 进行条件编译
- constexpr 使用 clang 编译 TensorFlow 时出错
- C++ constexpr语言 - 可以在编译时评估值吗?
- 编译时生成应在构造函数中创建的非 constexpr 对象数组
- constexpr 函数在编译时获取值,即使我的变量不是 constexpr
- 如何判断是否在编译时计算了"constexpr"(无需手动检查)
- C++编译时使用 constexpr 字符数组指针分配静态数组?
- Constexpr变量不是编译时值
- C++constexpr编译问题
- 模板;constexpr;编译时间
- 如果ConstexPR编译了错误分支的时间崩溃
- 使用constexpr编译时间哈希
- 仅在constexpr/编译时上下文中操作时,引用是否有用
- 使用 constexpr 编译时间字符串串联
- C++VS2015 constexpr编译错误,constexpr构造函数调用constexpr成员函数
- Constexpr编译错误使用std::acos与clang++而不是g++
- 使用constexpr编译时出错