Je suis en train d'écrire un modèle qui obtient le type d'un functionpointer comme templateargument et le functionpointer correspondant comme un argument de fonction, de façon un exemple simplyfied que je fais ce moment:L'utilisation type de pointeur de fonction comme argument de modèle
int myfunc(int a)
{ return a; }
template<typename T, typename Func> struct Test
{
typedef typeof(myfunc) Fun;
static T MyFunc(T val, Func f)
{
return f(val);
}
};
int main(void)
{
std::cout<<Test<int, typeof(myfunc)>::MyFunc(5, myfunc)<<std::endl;
}
Cependant ce code se bloque instantanément. Si je change le type de f à Fun
cela fonctionne parfaitement. Alors qu'est-ce que je fais de mal et comment puis-je faire fonctionner cela?
J'utilise MinGW sous Windows Vista si ce comportement dans le cas où le comportement dépend compilateur.
typeof ne fait pas partie de C++, de sorte que ne compile même pas sur mon compilateur –
Compile et fonctionne parfaitement ici. –
'typeof' est une extension GCC. Je suppose que ce n'est pas disponible sur MSVC. – ZoogieZork