fork(1) download
  1. #include <iostream>
  2.  
  3. class nullparam
  4. {};
  5.  
  6. template <class T, T Default>
  7. class default_param
  8. {
  9. public:
  10. default_param (const nullparam&)
  11. : _value (Default)
  12. {}
  13.  
  14. default_param (const T& val)
  15. : _value (val)
  16. {}
  17.  
  18. default_param (T&& val)
  19. : _value (std::forward <T> (val))
  20. {}
  21.  
  22. const T& get () const
  23. {
  24. return _value;
  25. }
  26.  
  27. private:
  28. T _value;
  29. };
  30.  
  31.  
  32. void foo (default_param<int, 10> p1, default_param <short, 22> p2, default_param <char, 'H'> p3)
  33. {
  34. std::cout << p1.get () << ' ' << p2.get() << ' ' << p3.get() << std::endl;
  35. }
  36.  
  37. int main() {
  38.  
  39. foo (nullparam(), nullparam(), 'G');
  40. foo (155, nullparam(), nullparam());
  41. foo (nullparam(), 122, nullparam());
  42.  
  43. return 0;
  44. }
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
10 22 G
155 22 H
10 122 H