【发布时间】:2017-06-04 08:55:25
【问题描述】:
我有以下代码:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
template< typename X>
X unary(X x)
{
return x*10;
}
X binary( X x,X y)
{
return x+y;
}
int main()
{
vector<int> v1{1,2,3,4,5,6};
vector<int> v2(v1);
vector<int>::iterator i;
for(i=v2.begin();i<v2.end();i++)
cout<<*i<<endl;
cout<<"unary "<<unary<int>(2)<<endl;
cout<<"binary "<<binary<int>(2,7);
}
但是,它无法编译,而是收到以下错误消息:
transform.cpp:12:1: 错误:‘X’没有命名类型
X 二进制(X x,X y)
transform.cpp:在函数“int main()”中:
transform.cpp:28:19: 错误:模板之前的预期主表达式'
出现在下面一行:
cout<<"binary "<< binary<int,int>(2,7);
为什么X 为unary 命名一个类型,而不是binary?
【问题讨论】:
-
对于
binary函数,X是什么?该函数不是模板。
标签: c++