模板规范

时间:2013-08-19 13:47:09

标签: c++

是否有可能专门化模板来抽象此行为(使用逻辑或特殊化类型) 使用另一个助手类。

当我将int或char传递给同一个类时要专门化。

template<typename K>
struct test
{

};

template<>
struct test<int or char>
{

};

感谢。

CB

3 个答案:

答案 0 :(得分: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
};

答案 1 :(得分:0)

你的问题太模糊了,但我觉得你这样谈论smth?

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

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

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

答案 2 :(得分:0)

C ++支持部分特化。解决问题的最简单方法(我认为这是你的问题)是为int或char部分专门化struct test,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
};