在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; 的含义是什么? 它看起来像模板专业化,但没有任何特定类型。所以我很困惑。
答案 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似乎没有模板参数的默认值。