diff --git a/libs/geom/include/psemek/geom/detail/array.hpp b/libs/geom/include/psemek/geom/detail/array.hpp index 53cf4895..3e451546 100644 --- a/libs/geom/include/psemek/geom/detail/array.hpp +++ b/libs/geom/include/psemek/geom/detail/array.hpp @@ -32,4 +32,19 @@ namespace psemek::geom::detail }; }; + template + struct all_convertible_to; + + + template + struct all_convertible_to + : std::true_type + {}; + + template + struct all_convertible_to + : std::bool_constant + && all_convertible_to::value> + {}; + } diff --git a/libs/geom/include/psemek/geom/point.hpp b/libs/geom/include/psemek/geom/point.hpp index 2bce6b0b..253ad190 100644 --- a/libs/geom/include/psemek/geom/point.hpp +++ b/libs/geom/include/psemek/geom/point.hpp @@ -24,12 +24,10 @@ namespace psemek::geom point & operator = (point &) = default; point & operator = (point &&) = default; - template + template ::value>> point(Args && ... args) : coords{ static_cast(std::forward(args))... } - { - static_assert(sizeof...(Args) == N); - } + {} std::size_t dimension() const { diff --git a/libs/geom/include/psemek/geom/vector.hpp b/libs/geom/include/psemek/geom/vector.hpp index bb20a72b..0e9681f3 100644 --- a/libs/geom/include/psemek/geom/vector.hpp +++ b/libs/geom/include/psemek/geom/vector.hpp @@ -29,12 +29,10 @@ namespace psemek::geom vector & operator = (vector &) = default; vector & operator = (vector &&) = default; - template + template ::value>> vector(Args && ... args) : coords{ static_cast(std::forward(args))... } - { - static_assert(sizeof...(Args) == N); - } + {} std::size_t dimension() const {