模板模板参数和函数调用

时间:2018-11-16 09:33:03

标签: c++ templates

我正在尝试编写一个接收模板模板参数的函数,并调用另一个也接收模板模板参数的函数。我想使用第一个中接收到的参数来调用第二个,但是我没有找到一种方法。示例:

template <template <typename> class AClass, typename AnotherClass>
AClass<typename AnotherClass::InnerType> bar(AnotherClass& a)
{
    AClass<typename AnotherClass::InnerType> result;
    return result;
}

template <template <typename> class AClass, typename AnotherClass>
AClass<typename AnotherClass::InnerType> foo(AnotherClass& a)
{
    auto result = bar<AClass, AnotherClass>(a);
}

我收到的错误是:错误:','标记之前缺少模板参数

1 个答案:

答案 0 :(得分:0)

如果添加明显丢失的return语句,我将无法重现您的问题:

template<typename T>
struct qux {
    using InnerType = T;
};

template <template <typename> class AClass, typename AnotherClass>
AClass<typename AnotherClass::InnerType> bar(AnotherClass& a)
{
    AClass<typename AnotherClass::InnerType> result;
    return result;
}

template <template <typename> class AClass, typename AnotherClass>
AClass<typename AnotherClass::InnerType> foo(AnotherClass& a)
{
    auto result = bar<AClass, AnotherClass>(a);
    return result;
}

int main()
{
    qux<int> b;
    foo<qux>(b);
}