gpt4 book ai didi

c++ - 根据std::is_same中的枚举值检查模板参数

转载 作者:行者123 更新时间:2023-12-01 15:10:54 24 4
gpt4 key购买 nike

考虑以下:

enum color {
r, g, b
};

template <color T>
constexpr bool is_green = std::is_same<T, color::g>::value;

g++无法编译此错误,错误

error: type/value mismatch at argument 1 in template parameter list for template<class, class> struct std::is_same



使用enum参数声明一个模板化类显然是可以接受的
template <color foo>
class widget

但是,似乎还应该有某种方法来检查该值(以备以后在有条件的情况下使用; static_if会不错,但需要c++ 17)。

最佳答案

std::is_same比较类型,而不是值。您可以只使用==比较值。例如

template <color T>
constexpr bool is_green = T == color::g;



It's clearly acceptable to declare a templated class using an enum parameter



是的你可以。但是请注意,它是 non-type template parameter,而不是 type template parameter

关于c++ - 根据std::is_same中的枚举值检查模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60449466/

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