Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::any(3)		      C++ Standard Libary		   std::any(3)

NAME
       std::any	- std::any

Synopsis
	  Defined in header <any>
	  class	any;		   (since C++17)

	  The  class  any describes a type-safe	container for single values of
       any copy
	  constructible	type.

	  1) An	object of class	any stores an instance of any type that	satis-
       fies the
	  constructor requirements or is empty,	and this is referred to	as the
       state of	the
	  class	any object. The	stored instance	is called  the	contained  ob-
       ject. Two states	are
	  equivalent  if  they	are either both	empty or if both are not empty
       and if the
	  contained objects are	equivalent.
	  2) The non-member any_cast functions provide type-safe access	to the
       contained
	  object.

	  Implementations are encouraged  to  avoid  dynamic  allocations  for
       small objects, but
	  such an optimization may only	be applied to types for	which
	  std::is_nothrow_move_constructible returns true.

Member functions
	  constructor	constructs an any object
			(public	member function)
	  operator=	assigns	an any object
			(public	member function)
	  destructor	destroys an any	object
			(public	member function)

Modifiers
	  emplace	 change	the contained object, constructing the new ob-
       ject directly
			(public	member function)
	  reset		destroys contained object
			(public	member function)
	  swap		swaps two any objects
			(public	member function)

Observers
	  has_value	checks if object holds a value
			(public	member function)
	  type		returns	the typeid of the contained value
			(public	member function)

Non-member functions
	  std::swap(std::any) specializes the std::swap	algorithm
	  (C++17)	      (function)
	  any_cast	      type-safe	access to the contained	object
	  (C++17)	      (function	template)
	  make_any	      creates an any object
	  (C++17)	      (function	template)

Helper classes
	  bad_any_cast	exception  thrown  by  the  value-returning  forms  of
       any_cast	on a type
	  (C++17)      mismatch
		       (class)

Notes
	  Feature-test macro: __cpp_lib_any

Example
       // Run this code

	#include <any>
	#include <iostream>

	int main()
	{
	    std::cout << std::boolalpha;

	    // any type
	    std::any a = 1;
	    std::cout  <<  a.type().name() << ": " << std::any_cast<int>(a) <<
       '\n';
	    a =	3.14;
	    std::cout << a.type().name() << ": "  <<  std::any_cast<double>(a)
       << '\n';
	    a =	true;
	    std::cout  << a.type().name() << ":	" << std::any_cast<bool>(a) <<
       '\n';

	    // bad cast
	    try
	    {
		a = 1;
		std::cout << std::any_cast<float>(a) <<	'\n';
	    }
	    catch (const std::bad_any_cast& e)
	    {
		std::cout << e.what() << '\n';
	    }

	    // has value
	    a =	2;
	    if (a.has_value())
	    {
		std::cout << a.type().name() <<	": " <<	 std::any_cast<int>(a)
       << '\n';
	    }

	    // reset
	    a.reset();
	    if (!a.has_value())
	    {
		std::cout << "no value\n";
	    }

	    // pointer to contained data
	    a =	3;
	    int* i = std::any_cast<int>(&a);
	    std::cout << *i << "\n";
	}

Possible output:
	int: 1
	double:	3.14
	bool: true
	bad any_cast
	int: 2
	no value
	3

See also
	  function	      wraps  callable object of	any copy constructible
       type with
	  (C++11)	     specified function	call signature
			     (class template)
	  move_only_function wraps callable object of any type with  specified
       function	call
	  (C++23)	     signature
			     (class template)
	  variant	     a type-safe discriminated union
	  (C++17)	     (class template)
	  optional	     a wrapper that may	or may not hold	an object
	  (C++17)	     (class template)

http://cppreference.com		  2022.07.31			   std::any(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::any&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help