gpt4 book ai didi

C++ 模板特化除一种之外的所有类型

转载 作者:行者123 更新时间:2023-12-02 05:35:04 24 4
gpt4 key购买 nike

我需要一个为除一种类型之外的所有类型调用的方法(C++ 11)。

template<typename T>
void method(T& value)
{
...
}

template<>
void method(std::string& value)
{
...
}

可以做这样的事情吗?如果没有,除了在运行时使用 typeid 之外还有其他选择吗?

最佳答案

有多种方法可以执行此操作,因此您可以使用最方便的一种:

// way 1
template<typename T,
typename std::enable_if<!std::is_same<T,std::string>::value>::type* = nullptr>
// way 2
void method(T& value)
{
static_assert(!std::is_same<T,std::string>::value,"std::string is not accepted");
...
}

// way 3
template <>
void method<std::string>(std::string&) = delete;

对于我来说,我发现 3 是过滤特定类型最方便的一种,1 是过滤某些类型子集的方式

关于C++ 模板特化除一种之外的所有类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41868221/

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