Namensräume
Varianten

std::as_const

Aus cppreference.com
<tbody> </tbody>
definiert in Header <utility>
template <class T> constexpr std::add_const_t<T>& as_const(T& t) noexcept;
(1)
template <class T> void as_const(const T&&) = delete;
(2)
1) Erzeugt aus einem lokalisierbaren Wert eine Referenz auf eine konstante vom Typ t
2) Die Überladung für lesbare Werte ist gelöscht worden, um die Benutzung von lesbaren Argumenten zu verbieten

Mögliche Implementierung

template <class T>
constexpr std::add_const_t<T>& as_const(T& t) noexcept
{
    return t;
}

Anmerkungen

Feature testing macro: __cpp_lib_as_const

Beispiele

#include <string>
#include <cassert>
#include <utility>
#include <type_traits>

int main()
{
    std::string mutableString = "Hello World!";
    auto&& constRef = std::as_const(mutableString);

//  mutableString.clear(); // OK
//  constRef.clear(); // error: 'constRef' is 'const' qualified,
                      //        but 'clear' is not marked const

    assert( &constRef == &mutableString );
    assert( &std::as_const( mutableString ) == &mutableString );

    using ExprType = std::remove_reference_t<decltype(std::as_const(mutableString))>;

    static_assert(std::is_same_v<std::remove_const_t<ExprType>, std::string>,
            "ExprType should be some kind of string." );
    static_assert(!std::is_same_v<ExprType, std::string>,
            "ExprType shouldn't be a mutable string." );
}


Referenzen

(C++11)
prüft, ob ein Typ const qualifizierten
Original:
checks if a type is const-qualified
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(Klassen-Template) [edit]
(C++11)
(C++11)
(C++11)
adds const or/and volatile specifiers to the given type
(Klassen-Template) [edit]
Entfernt const und / oder volatile Planer aus dem angegebenen Typ
Original:
removes const or/and volatile specifiers from the given type
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(Klassen-Template) [edit]