gpt4 book ai didi

c++ - 如何在结构中连接 std::is_same

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:58 29 4
gpt4 key购买 nike

我的 enable_if 语句变得很长,所以我想以某种方式进行 typedef。我不确定最好的方法是什么。

我试过了,还是不行

template<typename T>
struct isValidImageFormat
{
typedef
typename std::is_same<T, float>::value ||
typename std::is_same<T, unsigned char>::value
value;
};

错误是:

expected unqualified-id before »||« token typename std::is_same::value ||

问题:

  • 我的代码有什么问题?
  • 什么是解决我的问题的好方法?

最佳答案

你想要std::disjunction (哲学中“或”的花哨词):

typedef std::disjunction<
std::is_same<T, float>,
std::is_same<T, unsigned char>> condition;

然后您可以使用condition::value 来获取真值或假值。或者,如果您只想要一个值,请尝试以下操作:

constexpr bool condition =
std::is_same<T, float>::value ||
std::is_same<T, unsigned char>::value;

关于c++ - 如何在结构中连接 std::is_same,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39790524/

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