Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::remove_cv,std::remove_const,std::remove_volatile

      From cppreference.com
      <cpp‎ |types
       
       
      Metaprogramming library
      Type traits
      Type categories
      (C++11)
      (C++11)(DR*)
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      (C++11) 
      Type properties
      (C++11)
      (C++11)
      (C++14)
      (C++11)(deprecated in C++26)
      (C++11)(until C++20*)
      (C++11)(deprecated in C++20)
      (C++11)
      Type trait constants
      Metafunctions
      (C++17)
      Supported operations
      Relationships and property queries
      Type modifications
      remove_cvremove_constremove_volatile
      (C++11)(C++11)(C++11)
      (C++11)(C++11)(C++11)
      Type transformations
      (C++11)(deprecated in C++23)
      (C++11)(deprecated in C++23)
      (C++11)
      (C++11)(until C++20*)(C++17)

      Compile-time rational arithmetic
      Compile-time integer sequences
       
      Defined in header<type_traits>
      template<class T>
      struct remove_cv;
      (1)(since C++11)
      template<class T>
      struct remove_const;
      (2)(since C++11)
      template<class T>
      struct remove_volatile;
      (3)(since C++11)

      Provides the member typedeftype which is the same asT, except that its topmost cv-qualifiers are removed.

      1) Removes the topmostconst, or the topmostvolatile, or both, if present.
      2) Removes the topmostconst.
      3) Removes the topmostvolatile.

      If the program adds specializations for any of the templates described on this page, the behavior is undefined.

      Contents

      [edit]Member types

      Name Definition
      type the typeT without cv-qualifier

      [edit]Helper types

      template<class T>
      using remove_cv_t=typename remove_cv<T>::type;
      (since C++14)
      template<class T>
      using remove_const_t=typename remove_const<T>::type;
      (since C++14)
      template<class T>
      using remove_volatile_t=typename remove_volatile<T>::type;
      (since C++14)

      [edit]Possible implementation

      template<class T>struct remove_cv{typedef T type;};template<class T>struct remove_cv<const T>{typedef T type;};template<class T>struct remove_cv<volatile T>{typedef T type;};template<class T>struct remove_cv<constvolatile T>{typedef T type;}; template<class T>struct remove_const{typedef T type;};template<class T>struct remove_const<const T>{typedef T type;}; template<class T>struct remove_volatile{typedef T type;};template<class T>struct remove_volatile<volatile T>{typedef T type;};

      [edit]Example

      Removing const/volatile fromconstvolatileint* does not modify the type, because the pointer itself is neither const nor volatile.

      Run this code
      #include <type_traits> template<typename U,typename V>constexprbool same=std::is_same_v<U, V>; static_assert(    same<std::remove_cv_t<int>,int>&&    same<std::remove_cv_t<constint>,int>&&    same<std::remove_cv_t<volatileint>,int>&&    same<std::remove_cv_t<constvolatileint>,int>&&// remove_cv only works on types, not on pointers    not same<std::remove_cv_t<constvolatileint*>,int*>&&    same<std::remove_cv_t<constvolatileint*>,constvolatileint*>&&    same<std::remove_cv_t<constint*volatile>,constint*>&&    same<std::remove_cv_t<int*constvolatile>,int*>); int main(){}

      [edit]See also

      (C++11)
      checks if a type is const-qualified
      (class template)[edit]
      checks if a type is volatile-qualified
      (class template)[edit]
      (C++11)(C++11)(C++11)
      addsconst and/orvolatile specifiers to the given type
      (class template)[edit]
      combinesstd::remove_cv andstd::remove_reference
      (class template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/types/remove_cv&oldid=155271"

      [8]ページ先頭

      ©2009-2025 Movatter.jp