我无法使用Comeau和G ++编译器在C ++中编译小代码。我认为我的代码存在问题。这是:
template < typename T > void f(T t) { g(t); }
void g(int){}
int main() {
int a = 0;
f(a);
return 0;
}
编译器找不到函数g()
。
但是如果我使用用户定义的类型(不是int
),则编译为OK:
template < typename T > void f(T t) { g(t); }
struct A {};
void g(A a) {}
int main() {
A a;
f(a);
return 0;
}
任何人都可以帮我用int(double,char等)编译这段代码吗?
答案 0 :(得分:0)
可能没有关系,但在VC ++ 2012中,这为int a
行中的a提供了未初始化的变量警告。第二个示例(由于您在void g(A a)
之后缺少大括号而不编译)会创建一个带有默认构造函数的结构,因此不会发生错误。尝试在顶部代码中初始化int变量,看看是否仍然出现错误。