没有类型参数的模板父类

时间:2016-08-26 05:38:07

标签: c++ templates boost

boost文档中,有:

class times_two_visitor
    : public boost::static_visitor<>
{
public:
    void operator()(int & i) const
    {
        i *= 2;
    }
    void operator()(std::string & str) const
    {
        str += str;
    }

};

类声明中 boost :: static_visitor&lt;&gt; 的含义是什么? 它看起来像模板专业化,但没有任何特定类型。所以我很困惑。

1 个答案:

答案 0 :(得分:1)

如果模板具有所有模板参数的默认值,则可以使用模板,模板参数和模板参数来使用模板,类模板和函数模板。

E.g。

<>
template <typename T = int> struct Foo {};

Foo<double> f1;  // Explicitly specified template paramter
Foo<> f2;        // Default template parameter, int, is used.

<强> PS

我对使用template <typename T1 = int, typename T2 = double> struct Bar {}; Bar<float> b1; // T1 = float, T2 = double Bar<> b2; // T1 = int, T2 = double 感到惊讶,因为that class template似乎没有模板参数的默认值。