模板模板总专业化

时间:2010-08-13 16:44:07

标签: c++ templates generic-programming

模板模板规范如下:

template < template < class > class T >
struct MyTemplate
{
};

我应该如何为此模板创建全部(或部分)专业化? 这可能吗?

2 个答案:

答案 0 :(得分:5)

像这样:

#include <iostream>

template <typename T>
struct foo{};

template <typename T>
struct bar{};

template < template < class > class T >
struct MyTemplate
{
    static const bool value = false;
};

template <>
struct MyTemplate<bar>
{
    static const bool value = true;
};


int main(void)
{
    std::cout << std::boolalpha;
    std::cout << MyTemplate<foo>::value << std::endl;
    std::cout << MyTemplate<bar>::value << std::endl;
}

答案 1 :(得分:3)

例如,对此的专业化将是:

template<>
struct MyTemplate<std::auto_ptr> {
   // ...
};