是否有可能专门化模板以抽象此行为(使用逻辑或专门化类型)而不使用另一个帮助器类。
当我将 int 或 char 传递给同一个班级时进行专业化。
template<typename K>
struct test
{
};
template<>
struct test<int or char>
{
};
谢谢。
CB
是否有可能专门化模板以抽象此行为(使用逻辑或专门化类型)而不使用另一个帮助器类。
当我将 int 或 char 传递给同一个班级时进行专业化。
template<typename K>
struct test
{
};
template<>
struct test<int or char>
{
};
谢谢。
CB
您可以为此使用 C++11 类型特征(或者,如果您还没有 C++11,请使用 Boost 中的类型特征):
#include <type_traits>
template <typename K, bool special = std::is_same<K, char>::value || std::is_same<K, int>::value>
struct A
{
// general case
};
template <typename K>
srtuct A<K, true>
{
//int-or-char case
};
你的问题太含糊了,但我想你是这样说的?
template <typename T>
struct A
{
//...
}
template<B>
struct A
{
//...
}
在这种情况下,您指定模板结构应如何表现其某些特定类型的模板化
C++ 支持部分特化。解决您的问题的最简单方法(我认为这是您的问题)是对 int 或 char 进行部分专门化的结构测试,ala:
template <typename T> struct test
{
// For arbitrary type T...
};
template <>
struct test<int>
{
// definition for when T = int
};
template <>
struct test<char>
{
// definition for when T = char
};