fork(2) download
  1. #include <iostream>
  2. #include <iterator>
  3. #include <sstream>
  4.  
  5. using namespace std;
  6.  
  7. namespace N
  8. {
  9. class C
  10. {
  11. public: enum class E { a, b, c };
  12. };
  13. }
  14.  
  15. using U = N::C::E;
  16.  
  17. istream& operator>>( istream& is, U& e )
  18. {
  19. //...
  20. return is;
  21. }
  22.  
  23. int main()
  24. {
  25. istringstream ss{ "0 1 2" };
  26.  
  27. U e;
  28. ss >> e; // fine
  29.  
  30. istream_iterator<U> ii( ss ); // fails
  31. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
In file included from /usr/include/c++/8/iterator:66,
                 from prog.cpp:2:
/usr/include/c++/8/bits/stream_iterator.h: In instantiation of ‘void std::istream_iterator<_Tp, _CharT, _Traits, _Dist>::_M_read() [with _Tp = N::C::E; _CharT = char; _Traits = std::char_traits<char>; _Dist = long int]’:
/usr/include/c++/8/bits/stream_iterator.h:70:9:   required from ‘std::istream_iterator<_Tp, _CharT, _Traits, _Dist>::istream_iterator(std::istream_iterator<_Tp, _CharT, _Traits, _Dist>::istream_type&) [with _Tp = N::C::E; _CharT = char; _Traits = std::char_traits<char>; _Dist = long int; std::istream_iterator<_Tp, _CharT, _Traits, _Dist>::istream_type = std::basic_istream<char>]’
prog.cpp:30:34:   required from here
/usr/include/c++/8/bits/stream_iterator.h:121:17: error: no match for ‘operator>>’ (operand types are ‘std::istream_iterator<N::C::E>::istream_type’ {aka ‘std::basic_istream<char>’} and ‘N::C::E’)
      *_M_stream >> _M_value;
      ~~~~~~~~~~~^~~~~~~~~~~
In file included from /usr/include/c++/8/iostream:40,
                 from prog.cpp:1:
/usr/include/c++/8/istream:120:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__istream_type& (*)(std::basic_istream<_CharT, _Traits>::__istream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’
       operator>>(__istream_type& (*__pf)(__istream_type&))
       ^~~~~~~~
/usr/include/c++/8/istream:120:7: note:   no known conversion for argument 1 from ‘N::C::E’ to ‘std::basic_istream<char>::__istream_type& (*)(std::basic_istream<char>::__istream_type&)’ {aka ‘std::basic_istream<char>& (*)(std::basic_istream<char>&)’}
/usr/include/c++/8/istream:124:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__ios_type& (*)(std::basic_istream<_CharT, _Traits>::__ios_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>; std::basic_istream<_CharT, _Traits>::__ios_type = std::basic_ios<char>]’
       operator>>(__ios_type& (*__pf)(__ios_type&))
       ^~~~~~~~
/usr/include/c++/8/istream:124:7: note:   no known conversion for argument 1 from ‘N::C::E’ to ‘std::basic_istream<char>::__ios_type& (*)(std::basic_istream<char>::__ios_type&)’ {aka ‘std::basic_ios<char>& (*)(std::basic_ios<char>&)’}
/usr/include/c++/8/istream:131:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::ios_base& (*)(std::ios_base&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’
       operator>>(ios_base& (*__pf)(ios_base&))
       ^~~~~~~~
/usr/include/c++/8/istream:131:7: note:   no known conversion for argument 1 from ‘N::C::E’ to ‘std::ios_base& (*)(std::ios_base&)’
/usr/include/c++/8/istream:168:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’
       operator>>(bool& __n)
       ^~~~~~~~
/usr/include/c++/8/istream:168:7: note:   no known conversion for argument 1 from ‘N::C::E’ to ‘bool&’
/usr/include/c++/8/istream:172:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with _CharT = char; _Traits = std::char_traits<char>]’
       operator>>(short& __n);
       ^~~~~~~~
/usr/include/c++/8/istream:172:7: note:   no known conversion for argument 1 from ‘N::C::E’ to ‘short int&’
/usr/include/c++/8/istream:175:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(short unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’
       operator>>(unsigned short& __n)
       ^~~~~~~~
/usr/include/c++/8/istream:175:7: note:   no known conversion for argument 1 from ‘N::C::E’ to ‘short unsigned int&’
/usr/include/c++/8/istream:179:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT = char; _Traits = std::char_traits<char>]’
       operator>>(int& __n);
       ^~~~~~~~
/usr/include/c++/8/istream:179:7: note:   no known conversion for argument 1 from ‘N::C::E’ to ‘int&’
/usr/include/c++/8/istream:182:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’
       operator>>(unsigned int& __n)
       ^~~~~~~~
/usr/include/c++/8/istream:182:7: note:   no known conversion for argument 1 from ‘N::C::E’ to ‘unsigned int&’
/usr/include/c++/8/istream:186:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’
       operator>>(long& __n)
       ^~~~~~~~
/usr/include/c++/8/istream:186:7: note:   no known conversion for argument 1 from ‘N::C::E’ to ‘long int&’
/usr/include/c++/8/istream:190:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’
       operator>>(unsigned long& __n)
       ^~~~~~~~
/usr/include/c++/8/istream:190:7: note:   no known conversion for argument 1 from ‘N::C::E’ to ‘long unsigned int&’
/usr/include/c++/8/istream:195:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’
       operator>>(long long& __n)
       ^~~~~~~~
/usr/include/c++/8/istream:195:7: note:   no known conversion for argument 1 from ‘N::C::E’ to ‘long long int&’
/usr/include/c++/8/istream:199:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’
       operator>>(unsigned long long& __n)
       ^~~~~~~~
/usr/include/c++/8/istream:199:7: note:   no known conversion for argument 1 from ‘N::C::E’ to ‘long long unsigned int&’
/usr/include/c++/8/istream:214:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(float&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’
       operator>>(float& __f)
       ^~~~~~~~
/usr/include/c++/8/istream:214:7: note:   no known conversion for argument 1 from ‘N::C::E’ to ‘float&’
/usr/include/c++/8/istream:218:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(double&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’
       operator>>(double& __f)
       ^~~~~~~~
/usr/include/c++/8/istream:218:7: note:   no known conversion for argument 1 from ‘N::C::E’ to ‘double&’
/usr/include/c++/8/istream:222:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long double&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’
       operator>>(long double& __f)
       ^~~~~~~~
/usr/include/c++/8/istream:222:7: note:   no known conversion for argument 1 from ‘N::C::E’ to ‘long double&’
/usr/include/c++/8/istream:235:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(void*&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’
       operator>>(void*& __p)
       ^~~~~~~~
/usr/include/c++/8/istream:235:7: note:   no known conversion for argument 1 from ‘N::C::E’ to ‘void*&’
/usr/include/c++/8/istream:259:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__streambuf_type*) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__streambuf_type = std::basic_streambuf<char>]’
       operator>>(__streambuf_type* __sb);
       ^~~~~~~~
/usr/include/c++/8/istream:259:7: note:   no known conversion for argument 1 from ‘N::C::E’ to ‘std::basic_istream<char>::__streambuf_type*’ {aka ‘std::basic_streambuf<char>*’}
In file included from /usr/include/c++/8/string:53,
                 from /usr/include/c++/8/bits/locale_classes.h:40,
                 from /usr/include/c++/8/bits/ios_base.h:41,
                 from /usr/include/c++/8/ios:42,
                 from /usr/include/c++/8/ostream:38,
                 from /usr/include/c++/8/iostream:39,
                 from prog.cpp:1:
/usr/include/c++/8/bits/basic_string.tcc:1465:5: note: candidate: ‘template<class _CharT, class _Traits, class _Alloc> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&)’
     operator>>(basic_istream<_CharT, _Traits>& __in,
     ^~~~~~~~
/usr/include/c++/8/bits/basic_string.tcc:1465:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/8/iterator:66,
                 from prog.cpp:2:
/usr/include/c++/8/bits/stream_iterator.h:121:17: note:   mismatched types ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>’ and ‘N::C::E’
      *_M_stream >> _M_value;
      ~~~~~~~~~~~^~~~~~~~~~~
In file included from /usr/include/c++/8/istream:991,
                 from /usr/include/c++/8/iostream:40,
                 from prog.cpp:1:
/usr/include/c++/8/bits/istream.tcc:931:5: note: candidate: ‘template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT&)’
     operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c)
     ^~~~~~~~
/usr/include/c++/8/bits/istream.tcc:931:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/8/iterator:66,
                 from prog.cpp:2:
/usr/include/c++/8/bits/stream_iterator.h:121:17: note:   deduced conflicting types for parameter ‘_CharT’ (‘char’ and ‘N::C::E’)
      *_M_stream >> _M_value;
      ~~~~~~~~~~~^~~~~~~~~~~
In file included from /usr/include/c++/8/iostream:40,
                 from prog.cpp:1:
/usr/include/c++/8/istream:756:5: note: candidate: ‘template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char&)’
     operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c)
     ^~~~~~~~
/usr/include/c++/8/istream:756:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/8/iterator:66,
                 from prog.cpp:2:
/usr/include/c++/8/bits/stream_iterator.h:121:20: note:   cannot convert ‘((std::istream_iterator<N::C::E>*)this)->std::istream_iterator<N::C::E>::_M_value’ (type ‘N::C::E’) to type ‘unsigned char&’
      *_M_stream >> _M_value;
                    ^~~~~~~~
In file included from /usr/include/c++/8/iostream:40,
                 from prog.cpp:1:
/usr/include/c++/8/istream:761:5: note: candidate: ‘template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char&)’
     operator>>(basic_istream<char, _Traits>& __in, signed char& __c)
     ^~~~~~~~
/usr/include/c++/8/istream:761:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/8/iterator:66,
                 from prog.cpp:2:
/usr/include/c++/8/bits/stream_iterator.h:121:20: note:   cannot convert ‘((std::istream_iterator<N::C::E>*)this)->std::istream_iterator<N::C::E>::_M_value’ (type ‘N::C::E’) to type ‘signed char&’
      *_M_stream >> _M_value;
                    ^~~~~~~~
In file included from /usr/include/c++/8/istream:991,
                 from /usr/include/c++/8/iostream:40,
                 from prog.cpp:1:
/usr/include/c++/8/bits/istream.tcc:963:5: note: candidate: ‘template<class _CharT2, class _Traits2> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT2*)’
     operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s)
     ^~~~~~~~
/usr/include/c++/8/bits/istream.tcc:963:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/8/iterator:66,
                 from prog.cpp:2:
/usr/include/c++/8/bits/stream_iterator.h:121:17: note:   mismatched types ‘_CharT2*’ and ‘N::C::E’
      *_M_stream >> _M_value;
      ~~~~~~~~~~~^~~~~~~~~~~
In file included from /usr/include/c++/8/iostream:40,
                 from prog.cpp:1:
/usr/include/c++/8/istream:803:5: note: candidate: ‘template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char*)’
     operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s)
     ^~~~~~~~
/usr/include/c++/8/istream:803:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/8/iterator:66,
                 from prog.cpp:2:
/usr/include/c++/8/bits/stream_iterator.h:121:20: note:   cannot convert ‘((std::istream_iterator<N::C::E>*)this)->std::istream_iterator<N::C::E>::_M_value’ (type ‘N::C::E’) to type ‘unsigned char*’
      *_M_stream >> _M_value;
                    ^~~~~~~~
In file included from /usr/include/c++/8/iostream:40,
                 from prog.cpp:1:
/usr/include/c++/8/istream:808:5: note: candidate: ‘template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char*)’
     operator>>(basic_istream<char, _Traits>& __in, signed char* __s)
     ^~~~~~~~
/usr/include/c++/8/istream:808:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/8/iterator:66,
                 from prog.cpp:2:
/usr/include/c++/8/bits/stream_iterator.h:121:20: note:   cannot convert ‘((std::istream_iterator<N::C::E>*)this)->std::istream_iterator<N::C::E>::_M_value’ (type ‘N::C::E’) to type ‘signed char*’
      *_M_stream >> _M_value;
                    ^~~~~~~~
In file included from /usr/include/c++/8/iostream:40,
                 from prog.cpp:1:
/usr/include/c++/8/istream:980:5: note: candidate: ‘template<class _Istream, class _Tp> typename std::enable_if<std::__and_<std::__not_<std::is_lvalue_reference<_Tp> >, std::__is_convertible_to_basic_istream<_Istream>, std::__is_extractable<typename std::__is_convertible_to_basic_istream<_Tp>::__istream_type, _Tp&&, void> >::value, typename std::__is_convertible_to_basic_istream<_Tp>::__istream_type>::type std::operator>>(_Istream&&, _Tp&&)’
     operator>>(_Istream&& __is, _Tp&& __x)
     ^~~~~~~~
/usr/include/c++/8/istream:980:5: note:   template argument deduction/substitution failed:
/usr/include/c++/8/istream: In substitution of ‘template<class _Istream, class _Tp> typename std::enable_if<std::__and_<std::__not_<std::is_lvalue_reference<_Tp> >, std::__is_convertible_to_basic_istream<_Istream>, std::__is_extractable<typename std::__is_convertible_to_basic_istream<_Tp>::__istream_type, _Tp&&, void> >::value, typename std::__is_convertible_to_basic_istream<_Tp>::__istream_type>::type std::operator>>(_Istream&&, _Tp&&) [with _Istream = std::basic_istream<char>&; _Tp = N::C::E&]’:
/usr/include/c++/8/bits/stream_iterator.h:121:17:   required from ‘void std::istream_iterator<_Tp, _CharT, _Traits, _Dist>::_M_read() [with _Tp = N::C::E; _CharT = char; _Traits = std::char_traits<char>; _Dist = long int]’
/usr/include/c++/8/bits/stream_iterator.h:70:9:   required from ‘std::istream_iterator<_Tp, _CharT, _Traits, _Dist>::istream_iterator(std::istream_iterator<_Tp, _CharT, _Traits, _Dist>::istream_type&) [with _Tp = N::C::E; _CharT = char; _Traits = std::char_traits<char>; _Dist = long int; std::istream_iterator<_Tp, _CharT, _Traits, _Dist>::istream_type = std::basic_istream<char>]’
prog.cpp:30:34:   required from here
/usr/include/c++/8/istream:980:5: error: no type named ‘type’ in ‘struct std::enable_if<false, std::basic_istream<char>&>’
stdout
Standard output is empty