在模板类定义中创建NULL对象类型

时间:2018-02-05 22:52:32

标签: c++ class templates c++14

对于模板类

template<typename T>
class node{

public:
static auto null_node_type = typename //shared pointer holding node<T>*
                                // cast from NULL

};

我想在模板定义中包含上面的类型声明,但不知道如何实现这一点。

我尝试了以下内容,但没有成功:

    1. static auto null_node_type = 
typename shared_ptr<reinterpret_cast<node<T>*>(NULL)>;

在这种情况下,编译器会抱怨shared_ptr<>模板需要一个类型。

2. std::function<shared_ptr<T>(T)> make_null_obj_type = [] (T arg){

       return(make_shared<arg>(NULL));

};

template<typename T>
class node{

public:

static auto null_node_type = make_null_obj_type<node<T>>;

};

在这种情况下,编译器会标记node<T>(其中T被实际模板参数替换)不是完整对象类型的错误。

实现这一目标的正确方法是什么?

0 个答案:

没有答案