Monday, October 23, 2017

C++17: std::any

C++17 added an any class that can hold any object. Here is an example.

#include <any>
#include <iostream>
 
int main()
{
  int      myInt  ;
  std::any myAny  ;
 
  std::cout << myAny.has_value() << " ";
  try
  {
    myInt = std::any_cast<int>(myAny);
  }
  catch(std::bad_any_cast e)
  {
    std::cout << "bad ";
  }
  std::cout << ": ";
  myAny = std::any(3);
  std::cout << myAny.has_value() << " ";
  try
  {
    myInt = std::any_cast<int>(myAny);
  }
  catch(std::bad_any_cast e)
  {
    std::cout << "bad ";
  }
  std::cout << myInt << " ";
  std::cout << std::endl;
  return 0;
}
// Output: 0 bad : 1 3
References:
https://en.wikipedia.org/wiki/C%2B%2B17
http://en.cppreference.com/w/cpp/utility/any

No comments:

Post a Comment