【问题标题】:Parameter pack with templates [duplicate]带模板的参数包[重复]
【发布时间】:2021-09-25 20:18:53
【问题描述】:

我正在尝试检查第一个模板参数的类型是否与参数包中的至少一个元素相同,但是编译器给了我一个错误。我该怎么做?

template<typename TYPE, typename... x>
requires std::is_same_v<TYPE, x>...
class A
{
   ...
}

【问题讨论】:

    标签: c++ templates


    【解决方案1】:

    您需要使用折叠表达式扩展可变参数包。由于您只希望在至少一个相同的情况下扩展它,因此您可以使用|| ... 来确保如果其中一个条件是true,它将解析true

    另外,由于您使用的是概念,您也可以使用std::same_as 概念:

    #include <concepts>
    
    template<typename TYPE, typename... x>
      requires (std::same_as<TYPE, x> || ...)
      //                              ^~
    class A
    {
    
    };
    

    Live Example

    【讨论】:

      猜你喜欢
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 2014-09-15
      • 2019-02-04
      相关资源
      最近更新 更多