fork(2) download
  1. #include <iostream>
  2. #include <string>
  3.  
  4. template < typename T > struct type_tuple_value
  5. {
  6. T value;
  7. type_tuple_value ( T&& arg ) : value(std::forward<T>(arg)) {}
  8. };
  9.  
  10. template < typename ...T > struct type_tuple : type_tuple_value<T>...
  11. {
  12. template < typename ...Args > type_tuple ( Args&&... args ) :
  13. type_tuple_value<T>(std::forward<T>(args))... {}
  14. template < typename U > U& get() { return type_tuple_value<U>::value; }
  15. template < typename U > const U& get() const { return type_tuple_value<U>::value; }
  16. };
  17.  
  18. int main()
  19. {
  20. int i = 15;
  21. type_tuple<int,double,std::string,bool> t ( i, 30.27, "foo", true );
  22. std::cout << t.get<double>() << ", " << t.get<int>() << ", " << t.get<bool>()
  23. << ", " << t.get<std::string>()
  24. << std::endl;
  25. return 0;
  26. }
Success #stdin #stdout 0s 4540KB
stdin
Standard input is empty
stdout
30.27, 15, 1, foo