Ran dans quelque chose d'étrange lors de la métaprogrammation de modèle l'autre jour. Cela revient essentiellement à cette affirmation qui ne passe pas (comme je m'y attendais).
static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>);
Au début, je pensais que je faisais une erreur syntaxique en définissant une référence de fonction, mais cette assertion passe, montrant que ce n'est pas le cas.
static_assert(std::is_same_v<void()&, void()&>);
J'ai également essayé remove_reference
de m'implémenter en copiant la source à partir de cppreference mais cela n'a pas fonctionné non plus. Qu'est-ce qui se passe ici?
Le type que vous avez n'est pas une référence à une fonction, mais une fonction avec un qualificatif de référence .
la source