C ++模板函数根据模板参数返回类型

米克尔姆

我想创建一个函数来创建不同类型的生成器(自己的类),然后使用类似的方法:

template <typename Iterator>
class Generator {
Iterator begin_;
Iterator end_;
public:
Generator(Iterator begin, Iterator end)
    : begin_(begin)
    , end_(end)
    {}
};

template <typename GeneratorType, typename ContainerIterator>
GeneratorType<ContainerIterator> make_generator(ContainerIterator begin, ContainerIterator end){ // Error occurs here
    return GeneratorType<ContainerIterator>(std::forward<ContainerIterator>(begin), std::forward<ContainerIterator>(end));
}

但是由于错误,它没有编译:

error: 'GeneratorType' is not a template (in line GeneratorType<ContainerIterator> make_generator...)

有谁知道这是否可能,如果可以,如何解决?

讲故事的人-Unslander Monica

变更make_generator的定义

template <template<class> class GeneratorType, typename ContainerIterator>
GeneratorType<ContainerIterator> make_generator(ContainerIterator begin, ContainerIterator end)

您可以将模板作为参数传递给其他模板。但是需要根据模板template-parameter来指定参数定义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章