41
41
42
42
namespace peg {
43
43
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
-
50
44
/* -----------------------------------------------------------------------------
51
45
* any
52
46
*---------------------------------------------------------------------------*/
@@ -96,7 +90,7 @@ class any
96
90
97
91
template <
98
92
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
100
94
>
101
95
T& get () {
102
96
if (!content_) {
@@ -112,15 +106,15 @@ class any
112
106
113
107
template <
114
108
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
116
110
>
117
111
T& get () {
118
112
return *this ;
119
113
}
120
114
121
115
template <
122
116
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
124
118
>
125
119
const T& get () const {
126
120
assert (content_);
@@ -134,7 +128,7 @@ class any
134
128
135
129
template <
136
130
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
138
132
>
139
133
const any& get () const {
140
134
return *this ;
@@ -555,7 +549,7 @@ struct SemanticValues : protected std::vector<any>
555
549
*/
556
550
template <
557
551
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 ,
559
553
typename ... Args>
560
554
any call (F fn, Args&&... args) {
561
555
fn (std::forward<Args>(args)...);
@@ -564,7 +558,7 @@ any call(F fn, Args&&... args) {
564
558
565
559
template <
566
560
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 ,
568
562
typename ... Args>
569
563
any call (F fn, Args&&... args) {
570
564
return fn (std::forward<Args>(args)...);
@@ -574,7 +568,7 @@ template <
574
568
typename R, typename F,
575
569
typename std::enable_if<
576
570
!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 ,
578
572
typename ... Args>
579
573
any call (F fn, Args&&... args) {
580
574
return any (fn (std::forward<Args>(args)...));
@@ -587,26 +581,26 @@ class Action
587
581
588
582
Action (const Action& rhs) : fn_(rhs.fn_) {}
589
583
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 >
591
585
Action (F fn) : fn_(make_adaptor(fn, &F::operator ())) {}
592
586
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 >
594
588
Action (F fn) : fn_(make_adaptor(fn, fn)) {}
595
589
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 >
597
591
Action (F /* fn*/ ) {}
598
592
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 >
600
594
void operator =(F fn) {
601
595
fn_ = make_adaptor (fn, &F::operator ());
602
596
}
603
597
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 >
605
599
void operator =(F fn) {
606
600
fn_ = make_adaptor (fn, fn);
607
601
}
608
602
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 >
610
604
void operator =(F /* fn*/ ) {}
611
605
612
606
Action& operator =(const Action& rhs) = default ;
0 commit comments