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?
c++
c++17
typetraits
Darune
quelle
quelle
const int&
. Sie solltenconst int
im ersten Fall undint
im zweiten bekommen.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 wirdconst int&
zuconst int&
, da es keinen Lebenslauf-Qualifizierer der obersten Ebene gibt.std::remove_reference_t
wird dann zurückkehrenconst int
.Im zweiten Fall
std::remove_reference_t
wird zurückkehrenconst int
undstd::remove_cv_t
es in verwandelnint
.Einfache Demo
quelle