5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C++相談室 part58

811 :デフォルトの名無しさん:2007/11/04(日) 16:09:38
template<typename T>
void templateFunc(int a){}

template<typename T, typename U>
struct templateClass{
    templateClass(){
        struct D{
            T first;
            U second;
        };
        templateFunc<D>(0);
    }
};

void test(){
    templateClass<int, int> tc;
}

これがVC++2005ではコンパイル成功するんですけど
Fedora7付属のg++ 4.1.2だと

test.cpp: In constructor ‘templateClass<T, U>::templateClass() [with T = int, U = int]’:
test.cpp:17: instantiated from here
test.cpp:12: error: no matching function for call to ‘templateFunc(int)’

とエラーになってしまいます。struct Dを関数内じゃなくてtemplateClass内に移動すると、コンパイルは通ります。
これは何が間違ってるのでしょうか?
(g++4.2を試そうとしたんですがうまくインストールできませんでした。)

272 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)