Wpadłem na coś dziwnego podczas wykonywania metaprogramowania szablonu innego dnia. Zasadniczo sprowadza się do tego twierdzenia, że nie jest (jak się spodziewałbym) przemijanie.
static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>);
Na początku myślałem, że popełniam błąd składniowy, definiując odwołanie do funkcji, ale to twierdzenie mija, pokazując, że tak nie jest.
static_assert(std::is_same_v<void()&, void()&>);
Próbowałem też zaimplementować remove_reference
kopiowanie źródła z cppreference, ale to też nie działało. Co tu się dzieje?
Typ, który masz, nie jest odwołaniem do funkcji, ale funkcją z kwalifikatorem odwołania .
źródło