次の問題が発生しました(以下のコード):
template<class T>
void printname(const T& t){std::cout<<t<<std::endl;}
template<class T>
void applyfunc(const T& t, void (*f)(const T& )){(*f)(t);}
int main(){
const int a=1;
applyfunc(a,printname);
getchar();
return 0;
}
私の問題は、vc++8(VS2005)、および GCC、CLang (Ubuntu 12.04) でコンパイルできますが、vc++ 2008 Express でコンパイルできないことです。
合法的なコードのようですが、その理由はよくわかりません。
誰かがそれを説明できれば、私はそれを感謝します。
それが合法であると仮定すると、ファンクターで同様のことができる方法はありますか?