gpt4 book ai didi

c++ - 如何使用模板参数包实现仅限几种类型的SFINAE

转载 作者:行者123 更新时间:2023-12-02 10:02:12 26 4
gpt4 key购买 nike

我需要启用std::string和int,但要使用参数包。

template <typename... ParamType, typename = typename std::enable_if<std::is_same<ParamType..., std::string>::value || std::is_same<ParamType..., int>::value>::type>
static inline void Log(const ParamType & ... args)
{

}

但是我打电话时有错误
Log("hello"s, "world"s); //syntax ERROR 

所需结果
Log(4,3,"Hello"s); //OK
Log("Hello"s); //OK
Log(5); //OK

最佳答案

该解决方案使用了一些C++ 17-ism(std::void_t)。如果需要,可以使用各种实现针对早期C++标准的实现:

template <typename ... ParamType,
typename = std::void_t<std::enable_if_t
<std::is_same_v<ParamType, std::string> ||
std::is_same_v<ParamType, int>>...>>
static inline void Log(const ParamType & ... args)
{

}

关于c++ - 如何使用模板参数包实现仅限几种类型的SFINAE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62096444/

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