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

indicated.hpp
Go to the documentation of this file.
1 
9 #ifndef EAGINE_VALID_IF_INDICATED_HPP
10 #define EAGINE_VALID_IF_INDICATED_HPP
11 
12 #include "decl.hpp"
13 
14 namespace eagine {
15 
18 template <typename Indicator, typename Comparable, Comparable Value>
20  Indicator _indicator{};
21 
22  constexpr valid_if_indicated_policy() noexcept = default;
23 
24  constexpr valid_if_indicated_policy(Indicator indicator) noexcept
25  : _indicator(indicator) {}
26 
28  template <typename T>
29  auto operator()(const T&) const noexcept {
30  return Comparable(_indicator) == Value;
31  }
32 
33  struct do_log {
34  template <typename X>
35  constexpr do_log(X) noexcept {}
36 
37  template <typename Log, typename T>
38  void operator()(Log& log, const T&) const {
39  log << "indicator is " << Value;
40  }
41  };
42 };
43 
50 template <
51  typename T,
52  typename Indicator,
53  typename Comparable = bool,
54  Comparable Value = true>
55 using valid_if_indicated =
57 //------------------------------------------------------------------------------
58 } // namespace eagine
59 
60 #endif // EAGINE_VALID_IF_INDICATED_HPP
Common code is placed in this namespace.
Definition: eagine.hpp:21
Primary template for conditionally valid values.
Definition: decl.hpp:49
Policy for values valid when non-boolean Indicator has Value.
Definition: indicated.hpp:19
valid_if< T, valid_if_indicated_policy< Indicator, Comparable, Value > > valid_if_indicated
Specialization of valid_if, for values with non-boolean indicator.
Definition: indicated.hpp:56
auto operator()(const T &) const noexcept
Indicates value validity, true if indicator == Value.
Definition: indicated.hpp:29

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