考虑
templatestruct foo { template foo(ForwardIt first, ForwardIt last); };
为了实现构造函数,我写了
templatefoo(ForwardIt first, ForwardIt last) { // ToDo - code here }
但是这会产生编译错误,导致它无法将该定义与声明匹配.
我究竟做错了什么?我正在使用C++ 11编译器.
您的代码中存在两个问题.首先,你在类的主体之外的函数定义中缺少类的名称,这基本上意味着你声明一个与类或其成员函数无关的独立函数(在这种情况下它是非法的)因为你的函数没有返回类型因此不能是一个独立的函数).
其次,必须template
对类模板参数和成员函数模板参数使用不同的声明.
你需要:
templatetemplate foo ::foo(ForwardIt first, ForwardIt last) { // ToDo - code here }