fork download
  1. template <typename T>
  2. class LoopTemplate {
  3. T max, cnt;
  4. public:
  5. LoopTemplate(T max) : max(max), cnt(0) {}
  6. LoopTemplate(T min, T max) : max(max), cnt(min) {}
  7. LoopTemplate& begin() {
  8. return *this;
  9. }
  10. LoopTemplate& operator++() {
  11. cnt++;
  12. return *this;
  13. }
  14. T& operator*() {
  15. return cnt;
  16. }
  17. bool operator!=(LoopTemplate&) {
  18. return cnt < max;
  19. }
  20. LoopTemplate& end() {
  21. return *this;
  22. }
  23. };
  24. typedef LoopTemplate<long> Loop;
  25. LoopTemplate<unsigned long long> operator "" _(unsigned long long n)
  26. {
  27. return LoopTemplate<unsigned long long>(n);
  28. }
  29.  
  30.  
  31. /* Exapmle usage */
  32. #include <iostream>
  33.  
  34. void f(unsigned long long i)
  35. {
  36. std::cout << i << std::endl;
  37. }
  38.  
  39. int main()
  40. {
  41. for (auto&& i : 10_) {
  42. f(i);
  43. }
  44.  
  45. int x = 3;
  46. for (auto&& i : Loop(x)) {
  47. f(i);
  48. }
  49.  
  50. return 0;
  51. }
  52.  
Success #stdin #stdout 0s 3456KB
stdin
Standard input is empty
stdout
0
1
2
3
4
5
6
7
8
9
0
1
2