diff --git a/headers/kari.hpp/kari_ext.hpp b/headers/kari.hpp/kari_ext.hpp
index 5264970..8fd1539 100644
--- a/headers/kari.hpp/kari_ext.hpp
+++ b/headers/kari.hpp/kari_ext.hpp
@@ -8,12 +8,6 @@
#include "kari.hpp"
-#define KARI_HPP_NOEXCEPT_RETURN(...) \
- noexcept(noexcept(__VA_ARGS__)) { return __VA_ARGS__; }
-
-#define KARI_HPP_NOEXCEPT_DECLTYPE_RETURN(...) \
- noexcept(noexcept(__VA_ARGS__)) -> decltype (__VA_ARGS__) { return __VA_ARGS__; }
-
namespace kari_hpp
{
//
@@ -22,9 +16,9 @@ namespace kari_hpp
struct fid_t {
template < typename A >
- constexpr auto operator()(A&& a) const
- KARI_HPP_NOEXCEPT_DECLTYPE_RETURN(
- std::forward(a))
+ constexpr auto operator()(A&& a) const {
+ return std::forward(a);
+ }
};
inline constexpr auto fid = curry(fid_t{});
@@ -34,9 +28,9 @@ namespace kari_hpp
struct fconst_t {
template < typename A, typename B >
- constexpr auto operator()(A&& a, B&&) const
- KARI_HPP_NOEXCEPT_DECLTYPE_RETURN(
- std::forward(a))
+ constexpr auto operator()(A&& a, B&&) const {
+ return std::forward(a);
+ }
};
inline constexpr auto fconst = curry(fconst_t{});
@@ -46,12 +40,12 @@ namespace kari_hpp
struct fflip_t {
template < typename F, typename A, typename B >
- constexpr auto operator()(F&& f, A&& a, B&& b) const
- KARI_HPP_NOEXCEPT_DECLTYPE_RETURN(
- curry(
+ constexpr auto operator()(F&& f, A&& a, B&& b) const {
+ return curry(
std::forward(f),
std::forward(b),
- std::forward(a)))
+ std::forward(a));
+ }
};
inline constexpr auto fflip = curry(fflip_t{});
@@ -61,13 +55,13 @@ namespace kari_hpp
struct fpipe_t {
template < typename G, typename F, typename A >
- constexpr auto operator()(G&& g, F&& f, A&& a) const
- KARI_HPP_NOEXCEPT_DECLTYPE_RETURN(
- curry(
+ constexpr auto operator()(G&& g, F&& f, A&& a) const {
+ return curry(
std::forward(f),
curry(
std::forward(g),
- std::forward(a))))
+ std::forward(a)));
+ }
};
inline constexpr auto fpipe = curry(fpipe_t{});
@@ -77,13 +71,13 @@ namespace kari_hpp
struct fcompose_t {
template < typename G, typename F, typename A >
- constexpr auto operator()(G&& g, F&& f, A&& a) const
- KARI_HPP_NOEXCEPT_DECLTYPE_RETURN(
- curry(
+ constexpr auto operator()(G&& g, F&& f, A&& a) const {
+ return curry(
std::forward(g),
curry(
std::forward(f),
- std::forward(a))))
+ std::forward(a)));
+ }
};
inline constexpr auto fcompose = curry(fcompose_t{});
@@ -91,73 +85,55 @@ namespace kari_hpp
// fpipe operators
//
- template
- <
- typename G, typename F,
- typename std::enable_if_t>, int> = 0,
- typename std::enable_if_t>, int> = 0
- >
- constexpr auto operator|(G&& g, F&& f)
- KARI_HPP_NOEXCEPT_DECLTYPE_RETURN(
- fpipe(
+ template < typename G, typename F
+ , std::enable_if_t>, int> = 0
+ , std::enable_if_t>, int> = 0 >
+ constexpr auto operator|(G&& g, F&& f) {
+ return fpipe(
std::forward(g),
- std::forward(f)))
+ std::forward(f));
+ }
- template
- <
- typename F, typename A,
- typename std::enable_if_t< is_curried_v>, int> = 0,
- typename std::enable_if_t>, int> = 0
- >
- constexpr auto operator|(F&& f, A&& a)
- KARI_HPP_NOEXCEPT_DECLTYPE_RETURN(
- std::forward(f)(std::forward(a)))
+ template < typename F, typename A
+ , std::enable_if_t< is_curried_v>, int> = 0
+ , std::enable_if_t>, int> = 0 >
+ constexpr auto operator|(F&& f, A&& a) {
+ return std::forward(f)(std::forward(a));
+ }
- template
- <
- typename A, typename F,
- typename std::enable_if_t>, int> = 0,
- typename std::enable_if_t< is_curried_v>, int> = 0
- >
- constexpr auto operator|(A&& a, F&& f)
- KARI_HPP_NOEXCEPT_DECLTYPE_RETURN(
- std::forward(f)(std::forward(a)))
+ template < typename A, typename F
+ , std::enable_if_t>, int> = 0
+ , std::enable_if_t< is_curried_v>, int> = 0 >
+ constexpr auto operator|(A&& a, F&& f) {
+ return std::forward(f)(std::forward(a));
+ }
//
// fcompose operators
//
- template
- <
- typename G, typename F,
- typename std::enable_if_t>, int> = 0,
- typename std::enable_if_t>, int> = 0
- >
- constexpr auto operator*(G&& g, F&& f)
- KARI_HPP_NOEXCEPT_DECLTYPE_RETURN(
- fcompose(
+ template < typename G, typename F
+ , std::enable_if_t>, int> = 0
+ , std::enable_if_t>, int> = 0 >
+ constexpr auto operator*(G&& g, F&& f) {
+ return fcompose(
std::forward(g),
- std::forward(f)))
+ std::forward(f));
+ }
- template
- <
- typename F, typename A,
- typename std::enable_if_t< is_curried_v>, int> = 0,
- typename std::enable_if_t>, int> = 0
- >
- constexpr auto operator*(F&& f, A&& a)
- KARI_HPP_NOEXCEPT_DECLTYPE_RETURN(
- std::forward(f)(std::forward(a)))
+ template < typename F, typename A
+ , std::enable_if_t< is_curried_v>, int> = 0
+ , std::enable_if_t>, int> = 0 >
+ constexpr auto operator*(F&& f, A&& a) {
+ return std::forward(f)(std::forward(a));
+ }
- template
- <
- typename A, typename F,
- typename std::enable_if_t>, int> = 0,
- typename std::enable_if_t< is_curried_v>, int> = 0
- >
- constexpr auto operator*(A&& a, F&& f)
- KARI_HPP_NOEXCEPT_DECLTYPE_RETURN(
- std::forward(f)(std::forward(a)))
+ template < typename A, typename F
+ , std::enable_if_t>, int> = 0
+ , std::enable_if_t< is_curried_v>, int> = 0 >
+ constexpr auto operator*(A&& a, F&& f) {
+ return std::forward(f)(std::forward(a));
+ }
}
namespace kari_hpp::underscore
@@ -180,8 +156,10 @@ namespace kari_hpp::underscore
// unary operators
//
- #define KARI_HPP_DEFINE_UNDERSCORE_UNARY_OP(op, func) \
- constexpr auto operator op (us_t) KARI_HPP_NOEXCEPT_DECLTYPE_RETURN(curry(func))
+ #define KARI_HPP_DEFINE_UNDERSCORE_UNARY_OP(op, func)\
+ constexpr auto operator op (us_t) {\
+ return curry(func);\
+ }
KARI_HPP_DEFINE_UNDERSCORE_UNARY_OP(-, std::negate<>())
KARI_HPP_DEFINE_UNDERSCORE_UNARY_OP(~, std::bit_not<>())
@@ -192,17 +170,20 @@ namespace kari_hpp::underscore
// binary operators
//
- #define KARI_HPP_DEFINE_UNDERSCORE_BINARY_OP(op, func) \
- constexpr auto operator op (us_t, us_t) \
- KARI_HPP_NOEXCEPT_DECLTYPE_RETURN(curry(func)) \
+ #define KARI_HPP_DEFINE_UNDERSCORE_BINARY_OP(op, func)\
+ constexpr auto operator op (us_t, us_t) {\
+ return curry(func);\
+ }\
\
- template < typename A, typename std::enable_if_t>, int> = 0 > \
- constexpr auto operator op (A&& a, us_t) \
- KARI_HPP_NOEXCEPT_DECLTYPE_RETURN(curry(func, std::forward(a))) \
+ template < typename A, std::enable_if_t>, int> = 0 >\
+ constexpr auto operator op (A&& a, us_t) {\
+ return curry(func, std::forward(a));\
+ }\
\
- template < typename B, typename std::enable_if_t>, int> = 0 > \
- constexpr auto operator op (us_t, B&& b) \
- KARI_HPP_NOEXCEPT_DECLTYPE_RETURN(fflip(func, std::forward(b)))
+ template < typename B, std::enable_if_t>, int> = 0 >\
+ constexpr auto operator op (us_t, B&& b) {\
+ return fflip(func, std::forward(b));\
+ }
KARI_HPP_DEFINE_UNDERSCORE_BINARY_OP(+ , std::plus<>())
KARI_HPP_DEFINE_UNDERSCORE_BINARY_OP(- , std::minus<>())
@@ -226,6 +207,3 @@ namespace kari_hpp::underscore
KARI_HPP_DEFINE_UNDERSCORE_BINARY_OP(&&, std::logical_and<>())
#undef KARI_HPP_DEFINE_UNDERSCORE_BINARY_OP
}
-
-#undef KARI_HPP_NOEXCEPT_RETURN
-#undef KARI_HPP_NOEXCEPT_DECLTYPE_RETURN