gpt4 book ai didi

c++ - 编译时 bool 值 C++ 未知的 constexpr 函数参数

转载 作者:行者123 更新时间:2023-12-05 09:04:10 25 4
gpt4 key购买 nike

我需要运行一个带有 N 个 bool 变量的函数,我想让它们成为 constexpr 以消除比较并保存分支预测失败的代码。

我的意思是:

templateFunc<b1, b2, b3, b4 ...>(args...);

因为 b1..bn 变量只是 bool 变量并且可能只有 2 个状态,所以我可以这样写:

if (b1 && b2)
templateFunc<true, true>(args...);
else if (b1 && !b2)
templateFunc<true, false>(args...);
else if (!b1 && b2)
templateFunc<false, true>(args...);
else
templateFunc<false, false>(args...);

问题很明显,我需要 64 次调用 5 个变量。有什么解决方案吗?

最佳答案

std::variant (C++17),你可以通过 std::visit 进行动态调度:

// helper
std::variant<std::false_type, std::true_type> to_boolean_type(bool b)
{
if (b) return std::true_type{};
return std::false_type{};
}

然后

std::visit([&](auto... bs){templateFunc<bs...>(args...);},
to_boolean_type(b1), to_boolean_type(b2));

Demo

关于c++ - 编译时 bool 值 C++ 未知的 constexpr 函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68903555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com