用户定义类型上的空尖括号

时间:2018-05-13 16:33:10

标签: c++ c++11 templates template-specialization

在c ++模板中,我只知道2个用于空尖括号<>的用例,这些用例遇到:

1)在模板完全专业化期间,例如

template<typename T>
class X
{};

template<>
class X<char>
{};

2)在模板化函数调用期间,可以推导出哪种参数类型,例如

template<typename T>
T add(T a, T b);

...  

add<>(1, 2);

但是这个案子对我来说是全新的,我无法理解这种语法的含义(请看一下rapidxml::xml_node<>*):

class TestWidget : public GUI::Widget
{
public:
    TestWidget(const std::string& name, rapidxml::xml_node<>* elem);
    // ...
};

构造函数参数???

中给xml_node<>类型赋予了什么语义

1 个答案:

答案 0 :(得分:3)

还有默认模板参数:

template<typename T = char>
class X
{};

所以

X<> x; // X<char>