调用模板类的模板构造函数吗?

时间:2018-08-07 14:45:43

标签: c++ c++11

如果我有一个模板化的类,并且有一个模板化的构造函数:

template <typename Tdst>
struct memsrc {
    template <typename Tsrc>
    memsrc(const Tsrc *src, ssize_t len);

};

我在另一个也有类似模板的类中有该类的实例:

template <typename Tdst>
struct other {
   template <typename Tsrc>
   other();

   memsrc<Tdst> src_;
};

我想在其他构造函数中初始化src_,该怎么做?这个:

src_ = memsrc<Tdst>::memsrc<Tsrc>(nullptr, 0); 

不起作用:

rawio.h: In constructor ‘filesrc<Tdst>::filesrc(rawfile*)’:
rawio.h:578:49: error: expected primary-expression before ‘>’ token
             mmapsrc_ = memsrc<Tdst>::memsrc<Tsrc>(mmap_.ptr(), mmap_.size());

1 个答案:

答案 0 :(得分:0)

您不能为模板构造函数提供显式模板参数-必须推导​​它们。您可能正在寻找类似的东西

template <typename Tdst>
template <typename Tsrc>
other<Tdst>::other() : src_((Tsrc*)nullptr, 0) {}