gpt4 book ai didi

c++ - 如何制作可变参数is_same?

转载 作者:IT老高 更新时间:2023-10-28 12:38:39 29 4
gpt4 key购买 nike

如何创建一个类模板来返回它的任何可变参数类型是否等于第一个类型。我希望能够做到这一点:

is_same<T, A, B, C>::value; // true if T is one of A, B or C

如果 T 等于其中任何一种类型,则其静态 value 成员将为 true,否则为 false。我该怎么做?

最佳答案

C++17 简洁明了:

template <class T, class... Ts>
struct is_any : std::disjunction<std::is_same<T, Ts>...> {};

还有对偶:

template <class T, class... Ts>
struct are_same : std::conjunction<std::is_same<T, Ts>...> {};

使用折叠表达式的变体:

template <class T, class... Ts>
struct is_any : std::bool_constant<(std::is_same_v<T, Ts> || ...)> {};

template <class T, class... Ts>
struct are_same : std::bool_constant<(std::is_same_v<T, Ts> && ...)> {};

关于c++ - 如何制作可变参数is_same?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17032310/

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