Skip to content

Commit 559836c

Browse files
committed
Removed enabler
1 parent 5664d91 commit 559836c

File tree

1 file changed

+13
-19
lines changed

1 file changed

+13
-19
lines changed

peglib.h

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,6 @@
4141

4242
namespace peg {
4343

44-
#if __clang__ == 1 && __clang_major__ <= 5
45-
static void* enabler = nullptr; // workaround for Clang version <= 5.0.0
46-
#else
47-
extern void* enabler;
48-
#endif
49-
5044
/*-----------------------------------------------------------------------------
5145
* any
5246
*---------------------------------------------------------------------------*/
@@ -96,7 +90,7 @@ class any
9690

9791
template <
9892
typename T,
99-
typename std::enable_if<!std::is_same<T, any>::value>::type*& = enabler
93+
typename std::enable_if<!std::is_same<T, any>::value, std::nullptr_t>::type = nullptr
10094
>
10195
T& get() {
10296
if (!content_) {
@@ -112,15 +106,15 @@ class any
112106

113107
template <
114108
typename T,
115-
typename std::enable_if<std::is_same<T, any>::value>::type*& = enabler
109+
typename std::enable_if<std::is_same<T, any>::value, std::nullptr_t>::type = nullptr
116110
>
117111
T& get() {
118112
return *this;
119113
}
120114

121115
template <
122116
typename T,
123-
typename std::enable_if<!std::is_same<T, any>::value>::type*& = enabler
117+
typename std::enable_if<!std::is_same<T, any>::value, std::nullptr_t>::type = nullptr
124118
>
125119
const T& get() const {
126120
assert(content_);
@@ -134,7 +128,7 @@ class any
134128

135129
template <
136130
typename T,
137-
typename std::enable_if<std::is_same<T, any>::value>::type*& = enabler
131+
typename std::enable_if<std::is_same<T, any>::value, std::nullptr_t>::type = nullptr
138132
>
139133
const any& get() const {
140134
return *this;
@@ -555,7 +549,7 @@ struct SemanticValues : protected std::vector<any>
555549
*/
556550
template <
557551
typename R, typename F,
558-
typename std::enable_if<std::is_void<R>::value>::type*& = enabler,
552+
typename std::enable_if<std::is_void<R>::value, std::nullptr_t>::type = nullptr,
559553
typename... Args>
560554
any call(F fn, Args&&... args) {
561555
fn(std::forward<Args>(args)...);
@@ -564,7 +558,7 @@ any call(F fn, Args&&... args) {
564558

565559
template <
566560
typename R, typename F,
567-
typename std::enable_if<std::is_same<typename std::remove_cv<R>::type, any>::value>::type*& = enabler,
561+
typename std::enable_if<std::is_same<typename std::remove_cv<R>::type, any>::value, std::nullptr_t>::type = nullptr,
568562
typename... Args>
569563
any call(F fn, Args&&... args) {
570564
return fn(std::forward<Args>(args)...);
@@ -574,7 +568,7 @@ template <
574568
typename R, typename F,
575569
typename std::enable_if<
576570
!std::is_void<R>::value &&
577-
!std::is_same<typename std::remove_cv<R>::type, any>::value>::type*& = enabler,
571+
!std::is_same<typename std::remove_cv<R>::type, any>::value, std::nullptr_t>::type = nullptr,
578572
typename... Args>
579573
any call(F fn, Args&&... args) {
580574
return any(fn(std::forward<Args>(args)...));
@@ -587,26 +581,26 @@ class Action
587581

588582
Action(const Action& rhs) : fn_(rhs.fn_) {}
589583

590-
template <typename F, typename std::enable_if<!std::is_pointer<F>::value && !std::is_same<F, std::nullptr_t>::value>::type*& = enabler>
584+
template <typename F, typename std::enable_if<!std::is_pointer<F>::value && !std::is_same<F, std::nullptr_t>::value, std::nullptr_t>::type = nullptr>
591585
Action(F fn) : fn_(make_adaptor(fn, &F::operator())) {}
592586

593-
template <typename F, typename std::enable_if<std::is_pointer<F>::value>::type*& = enabler>
587+
template <typename F, typename std::enable_if<std::is_pointer<F>::value, std::nullptr_t>::type = nullptr>
594588
Action(F fn) : fn_(make_adaptor(fn, fn)) {}
595589

596-
template <typename F, typename std::enable_if<std::is_same<F, std::nullptr_t>::value>::type*& = enabler>
590+
template <typename F, typename std::enable_if<std::is_same<F, std::nullptr_t>::value, std::nullptr_t>::type = nullptr>
597591
Action(F /*fn*/) {}
598592

599-
template <typename F, typename std::enable_if<!std::is_pointer<F>::value && !std::is_same<F, std::nullptr_t>::value>::type*& = enabler>
593+
template <typename F, typename std::enable_if<!std::is_pointer<F>::value && !std::is_same<F, std::nullptr_t>::value, std::nullptr_t>::type = nullptr>
600594
void operator=(F fn) {
601595
fn_ = make_adaptor(fn, &F::operator());
602596
}
603597

604-
template <typename F, typename std::enable_if<std::is_pointer<F>::value>::type*& = enabler>
598+
template <typename F, typename std::enable_if<std::is_pointer<F>::value, std::nullptr_t>::type = nullptr>
605599
void operator=(F fn) {
606600
fn_ = make_adaptor(fn, fn);
607601
}
608602

609-
template <typename F, typename std::enable_if<std::is_same<F, std::nullptr_t>::value>::type*& = enabler>
603+
template <typename F, typename std::enable_if<std::is_same<F, std::nullptr_t>::value, std::nullptr_t>::type = nullptr>
610604
void operator=(F /*fn*/) {}
611605

612606
Action& operator=(const Action& rhs) = default;

0 commit comments

Comments
 (0)