◐ Shell
clean mode source ↗

std::as_const – cppreference.com

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]