fork download
  1. #include <iterator>
  2.  
  3. template<class T>
  4. struct myiterator {
  5. typedef std::input_iterator_tag iterator_category;
  6. typedef T value_type;
  7. typedef T* pointer;
  8. typedef T& reference;
  9. typedef int difference_type;
  10. };
  11.  
  12. namespace std {
  13. template<class Distance >
  14. template<class T>
  15. void advance(myiterator <T>& it, Distance n )
  16. {std::cout << "succeed\n";}
  17. }
  18.  
  19. int main() {
  20. myiterator<int> it;
  21. std::advance(it, 1);
  22. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:15:10: error: too many template-parameter-lists
In file included from /usr/include/c++/4.7/iterator:62:0,
                 from prog.cpp:1:
/usr/include/c++/4.7/bits/stl_iterator_base_funcs.h: In instantiation of ‘void std::__advance(_InputIterator&, _Distance, std::input_iterator_tag) [with _InputIterator = myiterator<int>; _Distance = int]’:
/usr/include/c++/4.7/bits/stl_iterator_base_funcs.h:176:7:   required from ‘void std::advance(_InputIterator&, _Distance) [with _InputIterator = myiterator<int>; _Distance = int]’
prog.cpp:21:23:   required from here
/usr/include/c++/4.7/bits/stl_iterator_base_funcs.h:128:2: error: no match for ‘operator++’ in ‘++__i’
stdout
Standard output is empty