• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    class template
    <type_traits>

    std::remove_extent

    namespace std {
      template <class T>
      struct remove_extent {
        using type = ;
      };
    
      template <class T>
      using remove_extent_t = typename remove_extent<T>::type; // C++14
    }
    

    概要

    配列型Tから次元を除去する。

    効果

    remove_extentは、型Tが、何らかの型Uの配列型である場合はU型を、そうでなければ型Tをメンバ型typeとして定義する。

    #include <type_traits>
    
    static_assert(std::is_same<
            std::remove_extent<int>::type,
            int
        >::value,
        "transform int to int");
    
    static_assert(std::is_same<
            std::remove_extent<const int[2]>::type,
            const int
        >::value,
        "transform const int[2] to const int");
    
    static_assert(std::is_same<
            std::remove_extent<int[2][4]>::type,
            int[4]
        >::value,
        "transform int[2][4] to int[4]");
    
    static_assert(std::is_same<
            std::remove_extent<int[][2]>::type,
            int[2]
        >::value,
        "transform int[][2] to int[2]");
    
    int main() {}
    

    出力

    バージョン

    言語

    • C++11

    処理系

    • Clang: 3.0
    • GCC: 4.3.6
    • Visual C++: 2008 (std::tr1) , 2010 , 2012 , 2013 , 2015
      • remove_extent_tは2013から

    参照