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_tentfernt 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_twird dann zurückkehren const int.
Im zweiten Fall std::remove_reference_twird zurückkehren const intund std::remove_cv_tes in verwandeln int.
const int&. Sie solltenconst intim ersten Fall undintim zweiten bekommen.