Język C++
remove_const_t
[alias] Szablon aliasu, który z danego typu zwraca tym bez przydomka constSkładnia
#include<type_traits>
namespace std
{
template < typename T >
struct remove_const;
template < typename T >
using remove_const_t = typename remove_const < T >::type;
}
Parametry szablonu
Opis szczegółowy
Jest to szablon aliasu, który z danego typu, będącego parametrem szablonu aliasu, zwraca typy niestały (bez przydomka
const
). Działa zarówno dla typów bez, jak i z przydomkiem
const
.
Dodatkowe informacje
Usuwanie
const
z typu odbywa się w trakcie kompilacji.
Rzucane wyjątki
Wszystko odbywa się w trakcie kompilacji, dlatego nie ma tutaj żadnych wyjątków.
Wymagania
Kompilator zgodny z C++14, lub posiadający implementację
std::remove_reference_t <>
Implementacja
namespace std
{
template < typename T >
struct remove_const
{
typedef T type;
};
template < typename T >
struct remove_const < const T >
{
typedef T type;
};
template < typename T >
using remove_const_t = typename remove_const < T >::type;
}
Przykład
#include<iostream>
#include<vector>
#include<iterator>
#include<type_traits>
using namespace std;
int main()
{
const vector < int > v1 = { 1772, 1793, 1795 };
remove_const_t < decltype( v1 ) > v2;
v2.push_back( 1939 );
copy( begin( v2 ), end( v2 ), ostream_iterator < int >( cout, "\n" ) );
}
Standardowe wyjście programu:
1939
Zagadnienia powiązane
remove_reference_t | Szablon aliasu pozyskujący z typu T typ, który nie jest referencją do l-wartości, ani referencją do r-wartości (alias) |
---|
Wszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści poza niniejszym serwisem
jest zabronione.
Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechniania własnego tekstu wedle własnego uznania.