Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::make_any

      From cppreference.com
      <cpp‎ |utility‎ |any
       
       
      Utilities library
       
       
      Defined in header<any>
      template<class T,class...Args>
      std::any make_any( Args&&...args);
      (1)(since C++17)
      template<class T,class U,class...Args>
      std::any make_any(std::initializer_list<U> il, Args&&...args);
      (2)(since C++17)

      Constructs anany object containing an object of typeT, passing the provided arguments toT's constructor.

      1) Equivalent toreturnstd::any(std::in_place_type<T>,std::forward<Args>(args)...);
      2) Equivalent toreturnstd::any(std::in_place_type<T>, il,std::forward<Args>(args)...);

      [edit]Example

      Run this code
      #include <any>#include <complex>#include <functional>#include <iostream>#include <string> int main(){auto a0= std::make_any<std::string>("Hello, std::any!\n");auto a1= std::make_any<std::complex<double>>(0.1,2.3); std::cout<<std::any_cast<std::string&>(a0);std::cout<<std::any_cast<std::complex<double>&>(a1)<<'\n'; using lambda=std::function<void(void)>; // Put a lambda into std::any. Attempt #1 (failed).std::any a2=[]{std::cout<<"Lambda #1.\n";};std::cout<<"a2.type() =\""<< a2.type().name()<<"\"\n"; // any_cast casts to <void(void)> but actual type is not// a std::function..., but ~ main::{lambda()#1}, and it is// unique for each lambda. So, this throws...try{std::any_cast<lambda>(a2)();}catch(std::bad_any_castconst& ex){std::cout<< ex.what()<<'\n';} // Put a lambda into std::any. Attempt #2 (successful).auto a3= std::make_any<lambda>([]{std::cout<<"Lambda #2.\n";});std::cout<<"a3.type() =\""<< a3.type().name()<<"\"\n";std::any_cast<lambda>(a3)();}

      Possible output:

      Hello, std::any!(0.1,2.3)a2.type() = "Z4mainEUlvE_"bad any_casta3.type() = "St8functionIFvvEE"Lambda #2.

      [edit]See also

      constructs anany object
      (public member function)[edit]
      (C++17)
      type-safe access to the contained object
      (function template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/any/make_any&oldid=150818"

      [8]ページ先頭

      ©2009-2025 Movatter.jp