Clang compilation fixes: use non-template stream output operators

This commit is contained in:
Nikita Lisitsa 2021-01-18 18:11:01 +03:00
parent f0611657ac
commit d7469920de
12 changed files with 52 additions and 22 deletions

View file

@ -1,5 +1,7 @@
#pragma once #pragma once
#include <psemek/util/io_fwd.hpp>
#include <psemek/geom/detail/array.hpp> #include <psemek/geom/detail/array.hpp>
#include <psemek/geom/interval.hpp> #include <psemek/geom/interval.hpp>
#include <psemek/geom/point.hpp> #include <psemek/geom/point.hpp>
@ -239,8 +241,8 @@ namespace psemek::geom
return *this = *this | b; return *this = *this | b;
} }
template <typename Stream, typename T, std::size_t N> template <typename T, std::size_t N>
Stream & operator << (Stream & os, box<T, N> const & b) std::ostream & operator << (std::ostream & os, box<T, N> const & b)
{ {
for (std::size_t i = 0; i < N; ++i) for (std::size_t i = 0; i < N; ++i)
{ {

View file

@ -1,5 +1,7 @@
#pragma once #pragma once
#include <psemek/util/io_fwd.hpp>
#include <limits> #include <limits>
#include <type_traits> #include <type_traits>
#include <cmath> #include <cmath>
@ -250,8 +252,8 @@ namespace psemek::geom
return i.min + i.length() * t; return i.min + i.length() * t;
} }
template <typename Stream, typename T> template <typename T>
Stream & operator << (Stream & os, interval<T> const & i) std::ostream & operator << (std::ostream & os, interval<T> const & i)
{ {
os << '[' << i.min << " .. " << i.max << ']'; os << '[' << i.min << " .. " << i.max << ']';
return os; return os;

View file

@ -1,5 +1,7 @@
#pragma once #pragma once
#include <psemek/util/io_fwd.hpp>
#include <psemek/geom/detail/array.hpp> #include <psemek/geom/detail/array.hpp>
#include <psemek/geom/vector.hpp> #include <psemek/geom/vector.hpp>
#include <psemek/geom/math.hpp> #include <psemek/geom/math.hpp>
@ -303,8 +305,8 @@ namespace psemek::geom
return r; return r;
} }
template <typename Stream, typename T, std::size_t R, std::size_t C> template <typename T, std::size_t R, std::size_t C>
Stream & operator << (Stream & os, matrix<T, R, C> const & m) std::ostream & operator << (std::ostream & os, matrix<T, R, C> const & m)
{ {
for (std::size_t i = 0; i < R; ++i) for (std::size_t i = 0; i < R; ++i)
{ {

View file

@ -1,5 +1,7 @@
#pragma once #pragma once
#include <psemek/util/io_fwd.hpp>
#include <psemek/geom/detail/array.hpp> #include <psemek/geom/detail/array.hpp>
#include <psemek/geom/vector.hpp> #include <psemek/geom/vector.hpp>
@ -188,8 +190,8 @@ namespace psemek::geom
return normalized(ort((ps - p0)...)); return normalized(ort((ps - p0)...));
} }
template <typename Stream, typename T, std::size_t N> template <typename T, std::size_t N>
Stream & operator << (Stream & os, point<T, N> const & p) std::ostream & operator << (std::ostream & os, point<T, N> const & p)
{ {
os << '(' << p[0]; os << '(' << p[0];
for (std::size_t i = 1; i < N; ++i) for (std::size_t i = 1; i < N; ++i)

View file

@ -1,6 +1,7 @@
#pragma once #pragma once
#include <psemek/util/assert.hpp> #include <psemek/util/assert.hpp>
#include <psemek/util/io_fwd.hpp>
namespace psemek::geom namespace psemek::geom
{ {
@ -12,8 +13,7 @@ namespace psemek::geom
negative = -1, negative = -1,
}; };
template <typename OStream> inline std::ostream & operator << (std::ostream & o, sign_t s)
OStream & operator << (OStream & o, sign_t s)
{ {
switch (s) switch (s)
{ {

View file

@ -1,5 +1,7 @@
#pragma once #pragma once
#include <psemek/util/io_fwd.hpp>
#include <psemek/geom/point.hpp> #include <psemek/geom/point.hpp>
#include <type_traits> #include <type_traits>
@ -34,8 +36,8 @@ namespace psemek::geom
template <typename Point> template <typename Point>
using triangle = simplex<Point, 2>; using triangle = simplex<Point, 2>;
template <typename Stream, typename Point, std::size_t K> template <typename Point, std::size_t K>
Stream & operator << (Stream & os, simplex<Point, K> const & s) std::ostream & operator << (std::ostream & os, simplex<Point, K> const & s)
{ {
os << '(' << s[0]; os << '(' << s[0];
for (std::size_t i = 1; i <= K; ++i) for (std::size_t i = 1; i <= K; ++i)

View file

@ -1,5 +1,7 @@
#pragma once #pragma once
#include <psemek/util/io_fwd.hpp>
#include <psemek/geom/detail/array.hpp> #include <psemek/geom/detail/array.hpp>
#include <cstddef> #include <cstddef>
@ -340,8 +342,8 @@ namespace psemek::geom
} }
} }
template <typename Stream, typename T, std::size_t N> template <typename T, std::size_t N>
Stream & operator << (Stream & os, vector<T, N> const & v) std::ostream & operator << (std::ostream & os, vector<T, N> const & v)
{ {
if constexpr (N == 0) if constexpr (N == 0)
{ {

View file

@ -1,5 +1,7 @@
#pragma once #pragma once
#include <iostream>
namespace psemek::log namespace psemek::log
{ {
@ -11,8 +13,7 @@ namespace psemek::log
error, error,
}; };
template <typename Stream> inline std::ostream & operator << (std::ostream & s, level l)
Stream & operator << (Stream & s, level l)
{ {
switch (l) switch (l)
{ {

View file

@ -1,12 +1,13 @@
#pragma once #pragma once
#include <iostream>
namespace psemek::util namespace psemek::util
{ {
struct empty{}; struct empty{};
template <typename Stream> std::ostream & operator << (std::ostream & os, empty)
Stream & operator << (Stream & os, empty)
{ {
os << "empty"; os << "empty";
return os; return os;

View file

@ -0,0 +1,14 @@
#pragma once
#include <iostream>
namespace std
{
template<typename Char, typename Traits>
class basic_istream;
template<typename Char, typename Traits>
class basic_ostream;
}

View file

@ -1,5 +1,7 @@
#pragma once #pragma once
#include <psemek/util/io_fwd.hpp>
#include <cmath> #include <cmath>
#include <limits> #include <limits>
@ -82,8 +84,8 @@ namespace psemek::util
return std::sqrt(sum_sqr_ / count_ - m * m); return std::sqrt(sum_sqr_ / count_ - m * m);
} }
template <typename OStream, typename T> template <typename T>
OStream & operator << (OStream & os, statistics<T> const & s) std::ostream & operator << (std::ostream & os, statistics<T> const & s)
{ {
os << "mean = " << s.mean() << ", var = " << s.var() << ", range = [" << s.min() << " .. " << s.max() << "]"; os << "mean = " << s.mean() << ", var = " << s.var() << ", range = [" << s.min() << " .. " << s.max() << "]";
return os; return os;

View file

@ -67,8 +67,8 @@ namespace psemek::test
} }
template <typename Stream, typename T> template <typename T>
Stream & operator << (Stream & s, std::optional<T> const & o) std::ostream & operator << (std::ostream & s, std::optional<T> const & o)
{ {
if (o) if (o)
s << *o; s << *o;