Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::experimental::make_array

      From cppreference.com
      <cpp‎ |experimental
       
       
       
       
      Defined in header<experimental/array>
      template<class D=void,class...Types>
      constexprstd::array<VT/* see below */, sizeof...(Types)> make_array( Types&&...t);
      (library fundamentals TS v2)

      Creates astd::array whose size is equal to the number of arguments and whose elements are initialized from the corresponding arguments. Returnsstd::array<VT, sizeof...(Types)>{std::forward<Types>(t)...}.

      IfD isvoid, then the deduced typeVT isstd::common_type_t<Types...>. Otherwise, it isD.

      IfD isvoid and any ofstd::decay_t<Types>... is a specialization ofstd::reference_wrapper, the program is ill-formed.

      Contents

      [edit]Notes

      make_array is removed in Library Fundamentals TS v3 because thededuction guide forstd::array andstd::to_array have been already in C++20.

      [edit]Possible implementation

      namespace details{template<class>struct is_ref_wrapper:std::false_type{};template<class T>struct is_ref_wrapper<std::reference_wrapper<T>>:std::true_type{}; template<class T>using not_ref_wrapper=std::negation<is_ref_wrapper<std::decay_t<T>>>; template<class D,class...>struct return_type_helper{using type= D;};template<class...Types>struct return_type_helper<void, Types...>:std::common_type<Types...>{        static_assert(std::conjunction_v<not_ref_wrapper<Types>...>,"Types cannot contain reference_wrappers when D is void");}; template<class D,class...Types>using return_type=std::array<typename return_type_helper<D, Types...>::type,                                   sizeof...(Types)>;} template<class D=void,class...Types>constexpr details::return_type<D, Types...> make_array(Types&&...t){return{std::forward<Types>(t)...};}

      [edit]Example

      Run this code
      #include <experimental/array>#include <iostream>#include <type_traits> int main(){auto arr= std::experimental::make_array(1,2,3,4,5);bool is_array_of_5_ints=std::is_same<decltype(arr),std::array<int,5>>::value;std::cout<<"Returns an array of five ints? ";std::cout<<std::boolalpha<< is_array_of_5_ints<<'\n';}

      Output:

      Returns an array of five ints? true

      [edit]See also

      C++ documentation forstd::array deduction guides
      creates astd::array object from a built-in array
      (function template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/experimental/make_array&oldid=154986"

      [8]ページ先頭

      ©2009-2025 Movatter.jp