diff --git a/libs/geom/include/psemek/geom/box.hpp b/libs/geom/include/psemek/geom/box.hpp index 799e8e9f..3c32d7b0 100644 --- a/libs/geom/include/psemek/geom/box.hpp +++ b/libs/geom/include/psemek/geom/box.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include #include #include @@ -239,8 +241,8 @@ namespace psemek::geom return *this = *this | b; } - template - Stream & operator << (Stream & os, box const & b) + template + std::ostream & operator << (std::ostream & os, box const & b) { for (std::size_t i = 0; i < N; ++i) { diff --git a/libs/geom/include/psemek/geom/interval.hpp b/libs/geom/include/psemek/geom/interval.hpp index 0ccc0a63..dd3782c7 100644 --- a/libs/geom/include/psemek/geom/interval.hpp +++ b/libs/geom/include/psemek/geom/interval.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include #include #include @@ -250,8 +252,8 @@ namespace psemek::geom return i.min + i.length() * t; } - template - Stream & operator << (Stream & os, interval const & i) + template + std::ostream & operator << (std::ostream & os, interval const & i) { os << '[' << i.min << " .. " << i.max << ']'; return os; diff --git a/libs/geom/include/psemek/geom/matrix.hpp b/libs/geom/include/psemek/geom/matrix.hpp index 556fe2df..41cec26e 100644 --- a/libs/geom/include/psemek/geom/matrix.hpp +++ b/libs/geom/include/psemek/geom/matrix.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include #include #include @@ -303,8 +305,8 @@ namespace psemek::geom return r; } - template - Stream & operator << (Stream & os, matrix const & m) + template + std::ostream & operator << (std::ostream & os, matrix const & m) { for (std::size_t i = 0; i < R; ++i) { diff --git a/libs/geom/include/psemek/geom/point.hpp b/libs/geom/include/psemek/geom/point.hpp index 7f615c4c..202bf716 100644 --- a/libs/geom/include/psemek/geom/point.hpp +++ b/libs/geom/include/psemek/geom/point.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include #include @@ -188,8 +190,8 @@ namespace psemek::geom return normalized(ort((ps - p0)...)); } - template - Stream & operator << (Stream & os, point const & p) + template + std::ostream & operator << (std::ostream & os, point const & p) { os << '(' << p[0]; for (std::size_t i = 1; i < N; ++i) diff --git a/libs/geom/include/psemek/geom/sign.hpp b/libs/geom/include/psemek/geom/sign.hpp index a5a2dac6..a43fa72e 100644 --- a/libs/geom/include/psemek/geom/sign.hpp +++ b/libs/geom/include/psemek/geom/sign.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include namespace psemek::geom { @@ -12,8 +13,7 @@ namespace psemek::geom negative = -1, }; - template - OStream & operator << (OStream & o, sign_t s) + inline std::ostream & operator << (std::ostream & o, sign_t s) { switch (s) { diff --git a/libs/geom/include/psemek/geom/simplex.hpp b/libs/geom/include/psemek/geom/simplex.hpp index f485bdd7..8d91caa3 100644 --- a/libs/geom/include/psemek/geom/simplex.hpp +++ b/libs/geom/include/psemek/geom/simplex.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include #include @@ -34,8 +36,8 @@ namespace psemek::geom template using triangle = simplex; - template - Stream & operator << (Stream & os, simplex const & s) + template + std::ostream & operator << (std::ostream & os, simplex const & s) { os << '(' << s[0]; for (std::size_t i = 1; i <= K; ++i) diff --git a/libs/geom/include/psemek/geom/vector.hpp b/libs/geom/include/psemek/geom/vector.hpp index 64be7975..504d6aac 100644 --- a/libs/geom/include/psemek/geom/vector.hpp +++ b/libs/geom/include/psemek/geom/vector.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include #include @@ -340,8 +342,8 @@ namespace psemek::geom } } - template - Stream & operator << (Stream & os, vector const & v) + template + std::ostream & operator << (std::ostream & os, vector const & v) { if constexpr (N == 0) { diff --git a/libs/log/include/psemek/log/level.hpp b/libs/log/include/psemek/log/level.hpp index 77cabba9..27cd0d66 100644 --- a/libs/log/include/psemek/log/level.hpp +++ b/libs/log/include/psemek/log/level.hpp @@ -1,5 +1,7 @@ #pragma once +#include + namespace psemek::log { @@ -11,8 +13,7 @@ namespace psemek::log error, }; - template - Stream & operator << (Stream & s, level l) + inline std::ostream & operator << (std::ostream & s, level l) { switch (l) { diff --git a/libs/util/include/psemek/util/empty.hpp b/libs/util/include/psemek/util/empty.hpp index 324e4d9d..bebfb2bd 100644 --- a/libs/util/include/psemek/util/empty.hpp +++ b/libs/util/include/psemek/util/empty.hpp @@ -1,12 +1,13 @@ #pragma once +#include + namespace psemek::util { struct empty{}; - template - Stream & operator << (Stream & os, empty) + std::ostream & operator << (std::ostream & os, empty) { os << "empty"; return os; diff --git a/libs/util/include/psemek/util/io_fwd.hpp b/libs/util/include/psemek/util/io_fwd.hpp new file mode 100644 index 00000000..1d0a7408 --- /dev/null +++ b/libs/util/include/psemek/util/io_fwd.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include + +namespace std +{ + + template + class basic_istream; + + template + class basic_ostream; + +} diff --git a/libs/util/include/psemek/util/statistics.hpp b/libs/util/include/psemek/util/statistics.hpp index 4c63a89c..8dfbfe98 100644 --- a/libs/util/include/psemek/util/statistics.hpp +++ b/libs/util/include/psemek/util/statistics.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include #include @@ -82,8 +84,8 @@ namespace psemek::util return std::sqrt(sum_sqr_ / count_ - m * m); } - template - OStream & operator << (OStream & os, statistics const & s) + template + std::ostream & operator << (std::ostream & os, statistics const & s) { os << "mean = " << s.mean() << ", var = " << s.var() << ", range = [" << s.min() << " .. " << s.max() << "]"; return os; diff --git a/tools/test/include/psemek/test/test.hpp b/tools/test/include/psemek/test/test.hpp index 8c476df8..d60b711e 100644 --- a/tools/test/include/psemek/test/test.hpp +++ b/tools/test/include/psemek/test/test.hpp @@ -67,8 +67,8 @@ namespace psemek::test } -template -Stream & operator << (Stream & s, std::optional const & o) +template +std::ostream & operator << (std::ostream & s, std::optional const & o) { if (o) s << *o;