Advertisement
Swiftkill

Any shenanigans

Jan 6th, 2021
1,147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.88 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <any>
  4. #include <string>
  5. #include <algorithm>
  6.    
  7. struct S {
  8.     std::string str;
  9.    
  10.     S(S&& arg) : str(std::move(arg.str)) { std::cout << ">> S moved" << std::endl; }
  11.     S(const S& arg) : str(arg.str) { std::cout << ">> S copied" << std::endl; }
  12.     S(const char *s) : str(s) { std::cout << ">> S created" << std::endl; }
  13.    
  14.     S& operator= (const S& arg) { str = arg.str; return *this; }
  15.     S& operator= (S&& arg) { str = std::move(arg.str); return *this; }
  16.     virtual ~S() { std::cout << "<< S destroyed" << std::endl; }
  17. };
  18.  
  19.  
  20. int main() {
  21.     std::vector<std::any> container;
  22.  
  23.     container.emplace_back(S("test 1"));
  24.  
  25.     for (const auto& a : container) {
  26.         //const S& smth = std::any_cast<const S&>(a);
  27.         std::cout << a.type().name() << ", " << std::any_cast<const S&>(a).str << std::endl;
  28.     }
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement