Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::experimental::apply

      From cppreference.com
      <cpp‎ |experimental
       
       
       
       
      Merged into ISO C++ The functionality described on this page was merged into the mainline ISO C++ standard as of 3/2016, seestd::apply(since C++17)
      Defined in header<experimental/tuple>
      template<class F,class Tuple>
      constexpr decltype(auto) apply(F&& f, Tuple&& t);
      (library fundamentals TS)

      Invoke theCallable objectf with a tuple of arguments.

      Contents

      [edit]Parameters

      f -Callable object to be invoked
      t - tuple whose elements to be used as arguments tof

      [edit]Return value

      What returned byf.

      [edit]Possible implementation

      namespace detail{template<class F,class Tuple,std::size_t...I>constexpr decltype(auto) apply_impl(F&& f, Tuple&& t,std::index_sequence<I...>){returnstd::invoke(std::forward<F>(f), std::get<I>(std::forward<Tuple>(t))...);// Note: std::invoke is a C++17 feature}}// namespace detail template<class F,class Tuple>constexpr decltype(auto) apply(F&& f, Tuple&& t){return detail::apply_impl(std::forward<F>(f),std::forward<Tuple>(t),std::make_index_sequence<std::tuple_size_v<std::decay_t<Tuple>>>{});}

      [edit]Example

      Run this code
      #include <iostream>#include <tuple> template<typename...Ts>void print_tuple(conststd::tuple<Ts...>&tuple){std::apply([](constauto&...elem){((std::cout<< elem<<'\n'), ...);}, tuple);} int main(){conststd::tuple<int,char> t=std::make_tuple(5,'a');    print_tuple(t);}

      Output:

      5a

      [edit]See also

      (C++11)
      creates atuple object of the type defined by the argument types
      (function template)[edit]
      creates atuple offorwarding references
      (function template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/experimental/apply&oldid=151588"

      [8]ページ先頭

      ©2009-2025 Movatter.jp