Skip to content

Commit

Permalink
Don't expose is_maybe
Browse files Browse the repository at this point in the history
  • Loading branch information
tom91136 committed Dec 26, 2023
1 parent e78b910 commit f22231c
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 8 deletions.
11 changes: 7 additions & 4 deletions include/fplus/maybe.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ namespace fplus
template <typename T>
class maybe;

namespace internal
{
template <typename>
struct is_maybe : std::false_type
{
Expand All @@ -32,6 +34,7 @@ template <typename T>
struct is_maybe<maybe<T>> : std::true_type
{
};
}

template <typename T>
class maybe
Expand Down Expand Up @@ -199,7 +202,7 @@ class maybe
auto join() const
{
static_assert(
is_maybe<T>::value,
internal::is_maybe<T>::value,
"Cannot join when value type is not also a maybe"
);
if (is_just())
Expand All @@ -218,7 +221,7 @@ class maybe
{
internal::trigger_static_asserts<internal::check_arity_tag, F, T>();
using FOut = std::decay_t<internal::invoke_result_t<F, T>>;
static_assert(is_maybe<FOut>::value,
static_assert(internal::is_maybe<FOut>::value,
"Function must return a maybe<> type");
if (is_just())
return internal::invoke(f, unsafe_get_just());
Expand Down Expand Up @@ -461,11 +464,11 @@ auto compose_maybe(Callables&&... callables)
{
using FOut = std::decay_t<
internal::invoke_result_t<decltype(f), decltype(args)...>>;
static_assert(is_maybe<FOut>::value,
static_assert(internal::is_maybe<FOut>::value,
"Functions must return a maybe<> type");
using GOut = std::decay_t<
internal::invoke_result_t<decltype(g), typename FOut::type>>;
static_assert(is_maybe<GOut>::value,
static_assert(internal::is_maybe<GOut>::value,
"Functions must return a maybe<> type");

auto maybeB =
Expand Down
11 changes: 7 additions & 4 deletions include_all_in_one/include/fplus/fplus.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2502,6 +2502,8 @@ namespace fplus
template <typename T>
class maybe;

namespace internal
{
template <typename>
struct is_maybe : std::false_type
{
Expand All @@ -2511,6 +2513,7 @@ template <typename T>
struct is_maybe<maybe<T>> : std::true_type
{
};
}

template <typename T>
class maybe
Expand Down Expand Up @@ -2678,7 +2681,7 @@ class maybe
auto join() const
{
static_assert(
is_maybe<T>::value,
internal::is_maybe<T>::value,
"Cannot join when value type is not also a maybe"
);
if (is_just())
Expand All @@ -2697,7 +2700,7 @@ class maybe
{
internal::trigger_static_asserts<internal::check_arity_tag, F, T>();
using FOut = std::decay_t<internal::invoke_result_t<F, T>>;
static_assert(is_maybe<FOut>::value,
static_assert(internal::is_maybe<FOut>::value,
"Function must return a maybe<> type");
if (is_just())
return internal::invoke(f, unsafe_get_just());
Expand Down Expand Up @@ -2940,11 +2943,11 @@ auto compose_maybe(Callables&&... callables)
{
using FOut = std::decay_t<
internal::invoke_result_t<decltype(f), decltype(args)...>>;
static_assert(is_maybe<FOut>::value,
static_assert(internal::is_maybe<FOut>::value,
"Functions must return a maybe<> type");
using GOut = std::decay_t<
internal::invoke_result_t<decltype(g), typename FOut::type>>;
static_assert(is_maybe<GOut>::value,
static_assert(internal::is_maybe<GOut>::value,
"Functions must return a maybe<> type");

auto maybeB =
Expand Down

0 comments on commit f22231c

Please sign in to comment.