Faites des expressions fun
y &fun
ont le même type ou pas ?
Considérons le code suivant :
template <typename Check, typename T>
void check(T)
{
static_assert(is_same<Check, T>::value);
}
void fun()
{}
check<void(*)()>(fun);
check<void(*)()>(&fun);
cout << typeid(fun).name() << endl;
cout << typeid(&fun).name() << endl;
Les deux assertions réussissent, ce qui suggère que les deux expressions ont le même type. Cependant, typeid
donnent des résultats différents :
FvvE
PFvvE
Pourquoi ça ?