나는 다음과 같은 문제 (아래 코드)를 내놓았다 :자동 템플릿 전문화
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, 그 소리 (에 Ubuntu 12.04) vC++ 2008 express로 컴파일하지 못했습니다.
그것은 합법적 인 코드 인 것 같지만 실제로 이유는 없습니다.
누구나 설명해 주시면 감사하겠습니다.
그것이 합법적이라고 가정하면, 비슷한 것이 Functor로 수행 될 수있는 방법이 있습니까?
VS2008 Express에는 어떤 오류가 있습니까? – Praetorian
왜 VS2008이 코드를 거부하는지 또는 다른 사람들이이를 받아들이는지 묻는 중입니까?* 합법적 인 코드 인 것 같지만 실제로 이유를 알지 못합니다. * 또한 비슷한 것이 Functor를 통해 수행 될 수있는 방법이 무엇인지 확실하지 않습니다. * 실제로는 의미합니다. 당신이 해보고 싶은 비슷한 무엇입니까? –
@Praetorian : C2896, C2784 함수 인수 void (*) (const T &)를 함수 인수로 사용할 수 없습니다. – user2588533