fork(2) download
  1. #include <iostream>
  2.  
  3. namespace implementation
  4. {
  5. namespace win
  6. {
  7. class A{};
  8. }
  9. namespace posix
  10. {
  11. class A{};
  12. }
  13. }
  14.  
  15. namespace ns
  16. {
  17. #ifdef _WIN32
  18. using A = implementation::win::A;
  19. #else
  20. using A = implementation::posix::A;
  21. #endif
  22.  
  23. // dump ns::A to any stream
  24. template<class OStream>
  25. OStream& operator << (OStream& os, const A& a)
  26. {
  27. os << "A"; // fake
  28. return os;
  29. }
  30. }
  31.  
  32. int main()
  33. {
  34. ns::A a;
  35. std::cout << a;
  36. return 0;
  37. }
Compilation error #stdin compilation error #stdout 0s 3140KB
stdin
Standard input is empty
compilation info
prog.cpp: In function 'int main()':
prog.cpp:35:15: error: cannot bind 'std::ostream {aka std::basic_ostream<char>}' lvalue to 'std::basic_ostream<char>&&'
  std::cout << a;
               ^
In file included from /usr/include/c++/4.9/iostream:39:0,
                 from prog.cpp:1:
/usr/include/c++/4.9/ostream:602:5: note: initializing argument 1 of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&&, const _Tp&) [with _CharT = char; _Traits = std::char_traits<char>; _Tp = implementation::posix::A]'
     operator<<(basic_ostream<_CharT, _Traits>&& __os, const _Tp& __x)
     ^
stdout
Standard output is empty