fork(3) download
  1. #include <iostream>
  2. #include <cstdint>
  3. using namespace std;
  4.  
  5. template<class T>
  6. class integer_IO
  7. {
  8. T &val;
  9.  
  10. public:
  11.  
  12. integer_IO(T &arg) : val(arg) {}
  13.  
  14. friend istream &operator>> (istream &is, integer_IO<T> &i)
  15. {
  16. decltype(+(i.val)) hlp;
  17. is >> hlp;
  18. i.val = hlp;
  19. return is;
  20. }
  21.  
  22. friend ostream &operator<< (ostream &os, integer_IO<T> const &i)
  23. {
  24. os << +(i.val);
  25. return os;
  26. }
  27. };
  28.  
  29. template<class T>
  30. integer_IO<T> intIO(T &arg)
  31. {
  32. return integer_IO<T>(arg);
  33. }
  34.  
  35. int main()
  36. {
  37. int_least8_t i;
  38. cin >> intIO(i);
  39. cout << intIO(i) << '\n';
  40. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
49
compilation info
prog.cpp: In function 'int main()':
prog.cpp:38:7: error: no match for 'operator>>' (operand types are 'std::istream {aka std::basic_istream<char>}' and 'integer_IO<signed char>')
   cin >> intIO(i);
       ^
In file included from /usr/include/c++/5/iostream:40:0,
                 from prog.cpp:1:
/usr/include/c++/5/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++/5/istream:120:7: note:   no known conversion for argument 1 from 'integer_IO<signed char>' 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++/5/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++/5/istream:124:7: note:   no known conversion for argument 1 from 'integer_IO<signed char>' 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++/5/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++/5/istream:131:7: note:   no known conversion for argument 1 from 'integer_IO<signed char>' to 'std::ios_base& (*)(std::ios_base&)'
/usr/include/c++/5/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++/5/istream:168:7: note:   no known conversion for argument 1 from 'integer_IO<signed char>' to 'bool&'
/usr/include/c++/5/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++/5/istream:172:7: note:   no known conversion for argument 1 from 'integer_IO<signed char>' to 'short int&'
/usr/include/c++/5/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++/5/istream:175:7: note:   no known conversion for argument 1 from 'integer_IO<signed char>' to 'short unsigned int&'
/usr/include/c++/5/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++/5/istream:179:7: note:   no known conversion for argument 1 from 'integer_IO<signed char>' to 'int&'
/usr/include/c++/5/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++/5/istream:182:7: note:   no known conversion for argument 1 from 'integer_IO<signed char>' to 'unsigned int&'
/usr/include/c++/5/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++/5/istream:186:7: note:   no known conversion for argument 1 from 'integer_IO<signed char>' to 'long int&'
/usr/include/c++/5/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++/5/istream:190:7: note:   no known conversion for argument 1 from 'integer_IO<signed char>' to 'long unsigned int&'
/usr/include/c++/5/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++/5/istream:195:7: note:   no known conversion for argument 1 from 'integer_IO<signed char>' to 'long long int&'
/usr/include/c++/5/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++/5/istream:199:7: note:   no known conversion for argument 1 from 'integer_IO<signed char>' to 'long long unsigned int&'
/usr/include/c++/5/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++/5/istream:214:7: note:   no known conversion for argument 1 from 'integer_IO<signed char>' to 'float&'
/usr/include/c++/5/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++/5/istream:218:7: note:   no known conversion for argument 1 from 'integer_IO<signed char>' to 'double&'
/usr/include/c++/5/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++/5/istream:222:7: note:   no known conversion for argument 1 from 'integer_IO<signed char>' to 'long double&'
/usr/include/c++/5/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++/5/istream:235:7: note:   no known conversion for argument 1 from 'integer_IO<signed char>' to 'void*&'
/usr/include/c++/5/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++/5/istream:259:7: note:   no known conversion for argument 1 from 'integer_IO<signed char>' to 'std::basic_istream<char>::__streambuf_type* {aka std::basic_streambuf<char>*}'
In file included from /usr/include/c++/5/string:53:0,
                 from /usr/include/c++/5/bits/locale_classes.h:40,
                 from /usr/include/c++/5/bits/ios_base.h:41,
                 from /usr/include/c++/5/ios:42,
                 from /usr/include/c++/5/ostream:38,
                 from /usr/include/c++/5/iostream:39,
                 from prog.cpp:1:
/usr/include/c++/5/bits/basic_string.tcc:1441:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::basic_string<_CharT, _Traits, _Alloc>&)
     operator>>(basic_istream<_CharT, _Traits>& __in,
     ^
/usr/include/c++/5/bits/basic_string.tcc:1441:5: note:   template argument deduction/substitution failed:
prog.cpp:38:17: note:   'integer_IO<signed char>' is not derived from 'std::basic_string<_CharT, _Traits, _Alloc>'
   cin >> intIO(i);
                 ^
In file included from /usr/include/c++/5/istream:934:0,
                 from /usr/include/c++/5/iostream:40,
                 from prog.cpp:1:
/usr/include/c++/5/bits/istream.tcc:955: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++/5/bits/istream.tcc:955:5: note:   template argument deduction/substitution failed:
prog.cpp:38:17: note:   mismatched types '_CharT2*' and 'integer_IO<signed char>'
   cin >> intIO(i);
                 ^
In file included from /usr/include/c++/5/istream:934:0,
                 from /usr/include/c++/5/iostream:40,
                 from prog.cpp:1:
/usr/include/c++/5/bits/istream.tcc:923: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++/5/bits/istream.tcc:923:5: note:   template argument deduction/substitution failed:
prog.cpp:38:17: note:   deduced conflicting types for parameter '_CharT' ('char' and 'integer_IO<signed char>')
   cin >> intIO(i);
                 ^
In file included from /usr/include/c++/5/iostream:40:0,
                 from prog.cpp:1:
/usr/include/c++/5/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++/5/istream:756:5: note:   template argument deduction/substitution failed:
prog.cpp:38:15: note:   cannot convert 'intIO<signed char>(i)' (type 'integer_IO<signed char>') to type 'unsigned char&'
   cin >> intIO(i);
               ^
In file included from /usr/include/c++/5/iostream:40:0,
                 from prog.cpp:1:
/usr/include/c++/5/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++/5/istream:761:5: note:   template argument deduction/substitution failed:
prog.cpp:38:15: note:   cannot convert 'intIO<signed char>(i)' (type 'integer_IO<signed char>') to type 'signed char&'
   cin >> intIO(i);
               ^
In file included from /usr/include/c++/5/iostream:40:0,
                 from prog.cpp:1:
/usr/include/c++/5/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++/5/istream:803:5: note:   template argument deduction/substitution failed:
prog.cpp:38:15: note:   cannot convert 'intIO<signed char>(i)' (type 'integer_IO<signed char>') to type 'unsigned char*'
   cin >> intIO(i);
               ^
In file included from /usr/include/c++/5/iostream:40:0,
                 from prog.cpp:1:
/usr/include/c++/5/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++/5/istream:808:5: note:   template argument deduction/substitution failed:
prog.cpp:38:15: note:   cannot convert 'intIO<signed char>(i)' (type 'integer_IO<signed char>') to type 'signed char*'
   cin >> intIO(i);
               ^
In file included from /usr/include/c++/5/iostream:40:0,
                 from prog.cpp:1:
/usr/include/c++/5/istream:924:5: note: candidate: std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&&, _Tp&) [with _CharT = char; _Traits = std::char_traits<char>; _Tp = integer_IO<signed char>] <near match>
     operator>>(basic_istream<_CharT, _Traits>&& __is, _Tp& __x)
     ^
/usr/include/c++/5/istream:924:5: note:   conversion of argument 2 would be ill-formed:
prog.cpp:38:15: error: invalid initialization of non-const reference of type 'integer_IO<signed char>&' from an rvalue of type 'integer_IO<signed char>'
   cin >> intIO(i);
               ^
prog.cpp:14:19: note: candidate: std::istream& operator>>(std::istream&, integer_IO<signed char>&) <near match>
   friend istream &operator>> (istream &is, integer_IO<T> &i)
                   ^
prog.cpp:14:19: note:   conversion of argument 2 would be ill-formed:
prog.cpp:38:15: error: invalid initialization of non-const reference of type 'integer_IO<signed char>&' from an rvalue of type 'integer_IO<signed char>'
   cin >> intIO(i);
               ^
stdout
Standard output is empty