質問

次の例を考えてみましょう:

#include <iostream>

template< int a >
void foo();

int main(int argn, char* argv[])
{
    foo<1>();
}

template<>
void foo<1>()
{
    std::cout<<1<<std::endl;
}

コンパイルは次のエラーメッセージで失敗します:

rg.cpp:12: error: specialization of ‘void foo() [with int a = 1]’ after instantiation

標準のどの段落がこのエラーを説明していますか?

PS:メインの前に関数定義を移動すると、エラーがなくなることを知っています。

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top