Ich bin neulich auf etwas Seltsames gestoßen, als ich eine Vorlagen-Metaprogrammierung durchgeführt habe. Es kommt im Grunde darauf an, dass diese Behauptung nicht (wie ich erwarten würde) vorübergeht.
static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>);
Zuerst dachte ich, ich hätte einen syntaktischen Fehler beim Definieren einer Funktionsreferenz gemacht, aber diese Behauptung ist erfolgreich und zeigt, dass dies nicht der Fall ist.
static_assert(std::is_same_v<void()&, void()&>);
Ich habe auch versucht, remove_reference
mich selbst zu implementieren, indem ich die Quelle von cppreference kopiert habe, aber das hat auch nicht funktioniert. Was geht hier vor sich?
Der Typ, den Sie haben, ist keine Referenz auf eine Funktion, sondern eine Funktion mit einem Referenzqualifizierer .
quelle