专门用于常量字符 * 的模板是否也接受字符 *
Will a template specialized for const char * accept char * as well?
专门
用于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++)
- 常量字符*是否有任何例外?
- 拆分字符串输入并查找字符是否有效
- CPP 中的 ++ 运算符对字符是否有任何重载?
- 验证字符是否小于字母 c++ 中的指定字母
- 字符串中的重复字符是否可以在 O(n) 中识别和量化
- 错误 ~ 检查字符是否为小写字母
- C++ 使用 || 检查字符是否不在字符串中不工作
- 如何检查2D阵列中的字符是否出现多次?C
- 将短字母转换为字符是否合法
- 比较两个字符*是否相等
- 如何检查字符是否是某个字母表中的字母
- 检查字符是否等于 C++ 中的
- 如何检查字符是否在范围内
- Strchr不起作用,或者我需要一个替代方案来检查给定字符串中的任何字符是否是另一个字符串的一部分
- C++如何确定字符是否是单词中的第一个字符
- 在VC ++浮点数据类型值中,如何检查字符串或特殊字符是否混合
- 如何检查字符串中的字符是否为字符串
- 字符 * 是否有等效的 _mm_loadu_ps