gpt4 book ai didi

c++ - 三元运算符和 if constexpr

转载 作者:太空狗 更新时间:2023-10-29 20:08:33 24 4
gpt4 key购买 nike

我有这样的情况,有时基于一些 bool 我想调用 2 个返回不同类型的 constexpr 函数并将其分配给 auto 常量.

不幸的是,三元运算符需要类型“相似”。

我在下面的代码中有解决方法,但它非常冗长。有没有更好的办法?

#include <iostream>
#include <string>

constexpr int get_int(){
return 47;
}

constexpr std::string_view get_string(){
return "47";
}

constexpr bool use_str = false;

constexpr auto get_dispatch(){
if constexpr(use_str){
return get_string();
} else{
return get_int();
}

}
int main()
{
// what I want : constexpr auto val = use_str ? get_string():get_int();
// what works:
constexpr auto val = get_dispatch();
std::cout << val << std::endl;
}

最佳答案

另一种选择是使用标签分派(dispatch):

constexpr int get(std::false_type) {
return 47;
}

constexpr std::string_view get(std::true_type) {
return "47";
}

int main() {
constexpr auto val = get(std::bool_constant<use_str>{});
std::cout << val << std::endl;
}

关于c++ - 三元运算符和 if constexpr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52749572/

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