2

我无法使用 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等)编译这段代码?

4

1 回答 1

0

也许不相关,但在 VC++ 2012 中,这会为行中的 a 提供未初始化的变量警告int a。第二个示例(由于缺少后面的大括号而无法void g(A a)编译)创建一个具有默认构造函数的结构,因此不会发生错误。尝试在顶部代码中初始化您的 int 变量,看看是否仍然出现错误。

于 2012-10-23T16:25:45.257 回答