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) を使用すると、コンパイルは正常に行われます。

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。2 番目の例 (の後の中かっこがないためにコンパイルされませんvoid g(A a)) は、既定のコンストラクターを使用して構造体を作成するため、エラーは発生しません。トップ コードで int 変数を初期化してみて、エラーが引き続き発生するかどうかを確認してください。

于 2012-10-23T16:25:45.257 に答える