OGLplus  (0.59.0) a C++ wrapper for rendering APIs

not_zero.hpp
Go to the documentation of this file.
1 
9 #ifndef EAGINE_VALID_IF_NOT_ZERO_HPP
10 #define EAGINE_VALID_IF_NOT_ZERO_HPP
11 
12 #include "decl.hpp"
13 
14 namespace eagine {
15 
18 template <typename T>
20 
22  constexpr auto operator()(T value) const noexcept {
23  return (value > T(0)) || (value < T(0));
24  }
25 
26  struct do_log {
27  template <typename X, typename = disable_if_same_t<X, do_log>>
28  constexpr do_log(X&&) noexcept {}
29 
30  template <typename Log>
31  void operator()(Log& log, const T&) const {
32  log << "Value zero is invalid";
33  }
34  };
35 };
36 
41 template <typename T>
43 
46 template <typename T>
48 
49 template <typename T>
50 static inline auto nonzero(T v) noexcept -> nonzero_t<T> {
51  return {v};
52 }
53 
54 } // namespace eagine
55 
56 #endif // EAGINE_VALID_IF_NOT_ZERO_HPP
Policy class for values valid if not equal to zero.
Definition: not_zero.hpp:19
Common code is placed in this namespace.
Definition: eagine.hpp:21
Primary template for conditionally valid values.
Definition: decl.hpp:49
constexpr auto operator()(T value) const noexcept
Indicates value validity, true if value != 0.
Definition: not_zero.hpp:22

Copyright © 2015-2021 Matúš Chochlík.
<chochlik -at -gmail.com>
Documentation generated on Tue Apr 13 2021 by Doxygen (version 1.8.17).