I'm unable to compile Linwarrior on debian because of the operator<< overloading function not working.
Make for Linux and derivates
g++ -Wp,-M,-MP,-MT,build/source/de/hackcraft/world/sub/cityscape/rBuilding.o,-MF,dep/build-source-de-hackcraft-world-sub-cityscape-rBuilding.o.d -std=gnu++0x -m32 -Wall -I source -O1 -funroll-loops -c source/de/hackcraft/world/sub/cityscape/rBuilding.cpp -o build/source/de/hackcraft/world/sub/cityscape/rBuilding.o
In file included from source/de/hackcraft/log/Logger.h:16:0,
from source/de/hackcraft/world/sub/cityscape/rBuilding.cpp:6:
source/de/hackcraft/log/LevelStreamLogger.h: In instantiation of ‘LevelStreamLogger& LevelStreamLogger::operator<<(const T&) [with T = std::__cxx11::basic_stringstream<char>]’:
source/de/hackcraft/world/sub/cityscape/rBuilding.cpp:298:32: required from here
source/de/hackcraft/log/LevelStreamLogger.h:44:19: error: no match for ‘operator<<’ (operand types are ‘std::stringstream {aka std::__cxx11::basic_stringstream<char>}’ and ‘const std::__cxx11::basic_stringstream<char>’)
logstream << val;
~~~~~~~~~~^~~~~~
source/de/hackcraft/log/LevelStreamLogger.h:44:19: note: candidate: operator<<(int, int) <built-in>
source/de/hackcraft/log/LevelStreamLogger.h:44:19: note: no known conversion for argument 2 from ‘const std::__cxx11::basic_stringstream<char>’ to ‘int’
In file included from /usr/include/c++/7/istream:39:0,
from /usr/include/c++/7/sstream:38,
from source/de/hackcraft/log/LevelStreamLogger.h:15,
from source/de/hackcraft/log/Logger.h:16,
from source/de/hackcraft/world/sub/cityscape/rBuilding.cpp:6:
/usr/include/c++/7/ostream:108:7: note: candidate: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ostream_type& (*)(std::basic_ostream<_CharT, _Traits>::__ostream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]
operator<<(__ostream_type& (*__pf)(__ostream_type&))
^~~~~~~~
The rest of the compiler output just lists non matching operator<< variants.
The code blocking Linux compilation is:
template<typename T>
LevelStreamLogger& operator<<(T const& val) {
logstream << val;
appendStream();
return *this;
}