gpt4 book ai didi

c++ - 专用于 const char * 的模板也会接受 char * 吗?

转载 作者:搜寻专家 更新时间:2023-10-31 00:33:38 24 4
gpt4 key购买 nike

请问有专门针对const char *的模板吗?捕获 char *还有吗?

例如:

template <typename T> class Foo { /* ... */ };
template <> class Foo<const char *> { /* ... */ };

威尔Foo<char *>引用通用模板还是专用模板?

最佳答案

模板类和函数只匹配精确匹配,所以在你的情况下,Foo<char*>将引用泛型,因为 char*const char*是不同的类型。这让函数变得更加困惑,因为有时引用会添加到类型中:const char*& .

制作一个接受指针变体的类模板有点复杂,但通常或多或少是这样工作的:

template <typename T, typename allowed=void> class Foo { /* ... */ };

template <typename T>
class Foo<T, typename std::enable_if<std::is_same<T, char*>::value ||
std::is_same<T, const char*>::value
>::type> { /* ... */ };

根据您的工作,您可能需要 std::remove_reference<T>

关于c++ - 专用于 const char * 的模板也会接受 char * 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28121281/

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