fork download
  1. #include <iostream>
  2. #include <sstream>
  3. #include <string>
  4.  
  5. class Log
  6. {
  7. public:
  8. Log()
  9. : m_filename( "dafault.log" )
  10. {}
  11.  
  12. // if you wanna give other names eventually...
  13. Log( const std::string & p_filename )
  14. : m_filename( p_filename )
  15. {}
  16.  
  17. virtual ~Log()
  18. {
  19. // implement your writeToFile() with std::ofstream
  20. //writeToFile( m_filename, m_stream, true );
  21. }
  22.  
  23. template< typename T >
  24. Log& operator<<(const T p_value )
  25. {
  26. m_stream << p_value;
  27. return *this;
  28. }
  29.  
  30. private:
  31. std::string m_filename;
  32. std::ostringstream m_stream;
  33. };
  34.  
  35. int main() {
  36. Log( "/tmp/my.log" ) << std::endl;
  37. return 0;
  38. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:36:23: error: no match for ‘operator<<’ (operand types are ‘Log’ and ‘<unresolved overloaded function type>’)
  Log( "/tmp/my.log" ) << std::endl;
  ~~~~~~~~~~~~~~~~~~~~~^~~~~~
prog.cpp:24:10: note: candidate: template<class T> Log& Log::operator<<(T)
     Log& operator<<(const T p_value )
          ^~~~~~~~
prog.cpp:24:10: note:   template argument deduction/substitution failed:
prog.cpp:36:31: note:   couldn't deduce template parameter ‘T’
  Log( "/tmp/my.log" ) << std::endl;
                               ^~~~
In file included from /usr/include/c++/6/iostream:39:0,
                 from prog.cpp:1:
/usr/include/c++/6/ostream:628:5: note: candidate: template<class _CharT, class _Traits, class _Tp> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&&, const _Tp&)
     operator<<(basic_ostream<_CharT, _Traits>&& __os, const _Tp& __x)
     ^~~~~~~~
/usr/include/c++/6/ostream:628:5: note:   template argument deduction/substitution failed:
prog.cpp:36:31: note:   ‘Log’ is not derived from ‘std::basic_ostream<_CharT, _Traits>’
  Log( "/tmp/my.log" ) << std::endl;
                               ^~~~
In file included from /usr/include/c++/6/iostream:39:0,
                 from prog.cpp:1:
/usr/include/c++/6/ostream:574:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const unsigned char*)
     operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s)
     ^~~~~~~~
/usr/include/c++/6/ostream:574:5: note:   template argument deduction/substitution failed:
prog.cpp:36:31: note:   ‘Log’ is not derived from ‘std::basic_ostream<char, _Traits>’
  Log( "/tmp/my.log" ) << std::endl;
                               ^~~~
In file included from /usr/include/c++/6/iostream:39:0,
                 from prog.cpp:1:
/usr/include/c++/6/ostream:569:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const signed char*)
     operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s)
     ^~~~~~~~
/usr/include/c++/6/ostream:569:5: note:   template argument deduction/substitution failed:
prog.cpp:36:31: note:   ‘Log’ is not derived from ‘std::basic_ostream<char, _Traits>’
  Log( "/tmp/my.log" ) << std::endl;
                               ^~~~
In file included from /usr/include/c++/6/iostream:39:0,
                 from prog.cpp:1:
/usr/include/c++/6/ostream:556:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const char*)
     operator<<(basic_ostream<char, _Traits>& __out, const char* __s)
     ^~~~~~~~
/usr/include/c++/6/ostream:556:5: note:   template argument deduction/substitution failed:
prog.cpp:36:31: note:   ‘Log’ is not derived from ‘std::basic_ostream<char, _Traits>’
  Log( "/tmp/my.log" ) << std::endl;
                               ^~~~
In file included from /usr/include/c++/6/ostream:638:0,
                 from /usr/include/c++/6/iostream:39,
                 from prog.cpp:1:
/usr/include/c++/6/bits/ostream.tcc:321:5: note: candidate: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const char*)
     operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s)
     ^~~~~~~~
/usr/include/c++/6/bits/ostream.tcc:321:5: note:   template argument deduction/substitution failed:
prog.cpp:36:31: note:   ‘Log’ is not derived from ‘std::basic_ostream<_CharT, _Traits>’
  Log( "/tmp/my.log" ) << std::endl;
                               ^~~~
In file included from /usr/include/c++/6/iostream:39:0,
                 from prog.cpp:1:
/usr/include/c++/6/ostream:539:5: note: candidate: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const _CharT*)
     operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s)
     ^~~~~~~~
/usr/include/c++/6/ostream:539:5: note:   template argument deduction/substitution failed:
prog.cpp:36:31: note:   ‘Log’ is not derived from ‘std::basic_ostream<_CharT, _Traits>’
  Log( "/tmp/my.log" ) << std::endl;
                               ^~~~
In file included from /usr/include/c++/6/iostream:39:0,
                 from prog.cpp:1:
/usr/include/c++/6/ostream:519:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, unsigned char)
     operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c)
     ^~~~~~~~
/usr/include/c++/6/ostream:519:5: note:   template argument deduction/substitution failed:
prog.cpp:36:31: note:   ‘Log’ is not derived from ‘std::basic_ostream<char, _Traits>’
  Log( "/tmp/my.log" ) << std::endl;
                               ^~~~
In file included from /usr/include/c++/6/iostream:39:0,
                 from prog.cpp:1:
/usr/include/c++/6/ostream:514:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, signed char)
     operator<<(basic_ostream<char, _Traits>& __out, signed char __c)
     ^~~~~~~~
/usr/include/c++/6/ostream:514:5: note:   template argument deduction/substitution failed:
prog.cpp:36:31: note:   ‘Log’ is not derived from ‘std::basic_ostream<char, _Traits>’
  Log( "/tmp/my.log" ) << std::endl;
                               ^~~~
In file included from /usr/include/c++/6/iostream:39:0,
                 from prog.cpp:1:
/usr/include/c++/6/ostream:508:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, char)
     operator<<(basic_ostream<char, _Traits>& __out, char __c)
     ^~~~~~~~
/usr/include/c++/6/ostream:508:5: note:   template argument deduction/substitution failed:
prog.cpp:36:31: note:   ‘Log’ is not derived from ‘std::basic_ostream<char, _Traits>’
  Log( "/tmp/my.log" ) << std::endl;
                               ^~~~
In file included from /usr/include/c++/6/iostream:39:0,
                 from prog.cpp:1:
/usr/include/c++/6/ostream:502:5: note: candidate: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, char)
     operator<<(basic_ostream<_CharT, _Traits>& __out, char __c)
     ^~~~~~~~
/usr/include/c++/6/ostream:502:5: note:   template argument deduction/substitution failed:
prog.cpp:36:31: note:   ‘Log’ is not derived from ‘std::basic_ostream<_CharT, _Traits>’
  Log( "/tmp/my.log" ) << std::endl;
                               ^~~~
In file included from /usr/include/c++/6/iostream:39:0,
                 from prog.cpp:1:
/usr/include/c++/6/ostream:497:5: note: candidate: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, _CharT)
     operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c)
     ^~~~~~~~
/usr/include/c++/6/ostream:497:5: note:   template argument deduction/substitution failed:
prog.cpp:36:31: note:   ‘Log’ is not derived from ‘std::basic_ostream<_CharT, _Traits>’
  Log( "/tmp/my.log" ) << std::endl;
                               ^~~~
In file included from /usr/include/c++/6/bits/ios_base.h:46:0,
                 from /usr/include/c++/6/ios:42,
                 from /usr/include/c++/6/ostream:38,
                 from /usr/include/c++/6/iostream:39,
                 from prog.cpp:1:
/usr/include/c++/6/system_error:209:5: note: candidate: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::error_code&)
     operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e)
     ^~~~~~~~
/usr/include/c++/6/system_error:209:5: note:   template argument deduction/substitution failed:
prog.cpp:36:31: note:   ‘Log’ is not derived from ‘std::basic_ostream<_CharT, _Traits>’
  Log( "/tmp/my.log" ) << std::endl;
                               ^~~~
In file included from /usr/include/c++/6/string:52:0,
                 from /usr/include/c++/6/bits/locale_classes.h:40,
                 from /usr/include/c++/6/bits/ios_base.h:41,
                 from /usr/include/c++/6/ios:42,
                 from /usr/include/c++/6/ostream:38,
                 from /usr/include/c++/6/iostream:39,
                 from prog.cpp:1:
/usr/include/c++/6/bits/basic_string.h:5340:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&)
     operator<<(basic_ostream<_CharT, _Traits>& __os,
     ^~~~~~~~
/usr/include/c++/6/bits/basic_string.h:5340:5: note:   template argument deduction/substitution failed:
prog.cpp:36:31: note:   ‘Log’ is not derived from ‘std::basic_ostream<_CharT, _Traits>’
  Log( "/tmp/my.log" ) << std::endl;
                               ^~~~
stdout
Standard output is empty