Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 模板参数和函数调用_C++_Templates - Fatal编程技术网

C++ 模板参数和函数调用

C++ 模板参数和函数调用,c++,templates,C++,Templates,我试图编写一个接收模板参数的函数,并调用另一个也接收模板参数的函数。我想使用第一个接收到的参数调用第二个,但我没有找到方法。例如: template <template <typename> class AClass, typename AnotherClass> AClass<typename AnotherClass::InnerType> bar(AnotherClass& a) { AClass<typename AnotherC

我试图编写一个接收模板参数的函数,并调用另一个也接收模板参数的函数。我想使用第一个接收到的参数调用第二个,但我没有找到方法。例如:

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);
}
模板
a级钢筋(另一个a级)
{
A等级结果;
返回结果;
}
模板
AClass foo(另一个a级)
{
自动结果=巴(a);
}

我收到的错误是:错误:在“,”标记之前缺少模板参数如果我添加明显缺少的返回语句,我无法重现您的问题:

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);
}
模板
结构qux{
使用InnerType=T;
};
模板
a级钢筋(另一个a级)
{
A等级结果;
返回结果;
}
模板
AClass foo(另一个a级)
{
自动结果=巴(a);
返回结果;
}
int main()
{
qux b;
傅(乙);;
}

错误消息是什么?在呼叫栏(a)中;它希望AClass
bar
的模板参数应该放在
foo
之前。然后我建议您发布不起作用的代码。“我收到的错误是:错误:在“,”token“之前缺少模板参数,在哪一行??我不明白。写一封信并发布包含行号的准确错误消息有多难??您不会从
foo()
返回任何值。