summaryrefslogtreecommitdiffhomepage
path: root/include/ocl/core/option.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/ocl/core/option.hpp')
-rw-r--r--include/ocl/core/option.hpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/include/ocl/core/option.hpp b/include/ocl/core/option.hpp
index e333dd5..b5a2778 100644
--- a/include/ocl/core/option.hpp
+++ b/include/ocl/core/option.hpp
@@ -23,15 +23,17 @@ namespace ocl
template <typename char_type = char>
struct option final
{
- explicit option(const return_type& return_type)
+ option() = delete;
+
+ option(const return_type& return_type)
: ret_(return_type)
{
}
~option() = default;
- option& operator=(const option&) = default;
- option(const option&) = default;
+ option& operator=(const option&) = delete;
+ option(const option&) = delete;
option& expect(const char_type* input)
{
@@ -65,7 +67,7 @@ namespace ocl
return tell(std::forward<Lst>(arg)...) ? return_type::okay : return_type::err;
}
- namespace traits
+ namespace detail
{
struct int_eq_teller
{
@@ -90,26 +92,26 @@ namespace ocl
return (a < b);
}
};
- } // namespace traits
+ } // namespace detail
template <typename... Lst>
inline return_type eval_less_than(Lst&&... arg)
{
- static traits::int_less_than_teller eq;
+ static detail::int_less_than_teller eq;
return eq(std::forward<Lst>(arg)...) ? return_type::okay : return_type::err;
}
template <typename... Lst>
inline return_type eval_eq(Lst&&... arg)
{
- static traits::int_eq_teller less_than;
+ static detail::int_eq_teller less_than;
return less_than(std::forward<Lst>(arg)...) ? return_type::okay : return_type::err;
}
template <typename... Lst>
inline return_type eval_greater_than(Lst&&... arg)
{
- static traits::int_greater_than_teller greater_than;
+ static detail::int_greater_than_teller greater_than;
return greater_than(std::forward<Lst>(arg)...) ? return_type::okay : return_type::err;
}
@@ -122,6 +124,11 @@ namespace ocl
{
return return_type::err;
}
+
+ inline return_type eval_invalid() noexcept
+ {
+ return return_type::invalid;
+ }
} // namespace ocl
#endif /* ifndef _OCL_OPT_HPP */ \ No newline at end of file