Ist es wichtig, in welcher Reihenfolge Folgendes angewendet wird?
std::remove_reference_t<std::remove_cv_t<T>>
oder
std::remove_cv_t<std::remove_reference_t<T>>
In welchem Szenario spielt die Bestellung eine Rolle?
const
" sein.
Ist es wichtig, in welcher Reihenfolge Folgendes angewendet wird?
std::remove_reference_t<std::remove_cv_t<T>>
oder
std::remove_cv_t<std::remove_reference_t<T>>
In welchem Szenario spielt die Bestellung eine Rolle?
const
" sein.
Antworten:
Es gibt Fälle, in denen diese beiden Typmerkmale unterschiedliche Ergebnisse liefern. Betrachten wir zum Beispiel T = const int&
.
std::remove_cv_t
entfernt den Lebenslauf-Qualifizierer der obersten Ebene und wird const int&
zu const int&
, da es keinen Lebenslauf-Qualifizierer der obersten Ebene gibt. std::remove_reference_t
wird dann zurückkehren const int
.
Im zweiten Fall std::remove_reference_t
wird zurückkehren const int
und std::remove_cv_t
es in verwandeln int
.
const int&
. Sie solltenconst int
im ersten Fall undint
im zweiten bekommen.