Advertisement
Dukales

reflect lhs typename

May 18th, 2015
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <ostream>
  3. #include <string>
  4. #include <type_traits>
  5.  
  6. #include <cstdlib>
  7.  
  8. struct reflect
  9. {
  10.  
  11.     template< typename T >
  12.     operator T () const
  13.     {
  14.         static_assert(std::is_default_constructible< T >{});
  15.         typename_ = __PRETTY_FUNCTION__;
  16.         return {};
  17.     }
  18.  
  19.     friend
  20.     std::ostream &
  21.     operator << (std::ostream & _out, reflect const & _reflect)
  22.     {
  23.         return _out << _reflect.typename_;
  24.     }
  25.  
  26. private :
  27.  
  28.     mutable std::string typename_;
  29.  
  30. };
  31.  
  32. int
  33. main()
  34. {
  35.     reflect const r{};
  36.     struct {} _ = r;
  37.     std::cout << r << std::endl;
  38.     return EXIT_SUCCESS;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement