-4

是否有可能专门化模板以抽象此行为(使用逻辑或专门化类型)而不使用另一个帮助器类。

当我将 int 或 char 传递给同一个班级时进行专业化。

template<typename K>
struct test
{

};

template<>
struct test<int or char>
{

};

谢谢。

CB

4

3 回答 3

2

您可以为此使用 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
};
于 2013-08-19T13:56:00.253 回答
0

你的问题太含糊了,但我想你是这样说的?

template <typename T>
struct A
{
    //...
}

template<B>
struct A
{
    //...
}

在这种情况下,您指定模板结构应如何表现其某些特定类型的模板化

于 2013-08-19T13:51:40.563 回答
0

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
};
于 2013-08-19T13:55:23.063 回答