@@ -572,14 +572,24 @@ namespace classdesc
572
572
573
573
// / extract an argument from buffer \a b, and run functional f on it
574
574
template <class F , class A , class R , class B >
575
- typename enable_if<ArgAcceptable<A>, R>::T
575
+ typename enable_if<And< ArgAcceptable<A>,Not<is_same<A, const char *>> >, R>::T
576
576
eval (F f, B& b)
577
577
{
578
578
A a{};
579
579
b>>a;
580
580
return f (a);
581
581
}
582
582
583
+ template <class F , class A , class R , class B >
584
+ typename enable_if<And<ArgAcceptable<A>,is_same<A,const char *>>, R>::T
585
+ eval (F f, B& b)
586
+ {
587
+ std::string a{};
588
+ b>>a;
589
+ const char * tmp=a.c_str ();
590
+ return f (tmp);
591
+ }
592
+
583
593
template <class F , class A , class R , class B >
584
594
typename enable_if<Not<ArgAcceptable<A>>, R>::T
585
595
eval (F f, B& b)
@@ -588,14 +598,24 @@ namespace classdesc
588
598
}
589
599
590
600
template <class F , class A , class B >
591
- typename enable_if<ArgAcceptable<A>, void >::T
601
+ typename enable_if<And< ArgAcceptable<A>,Not<is_same<A, const char *>> >, void >::T
592
602
evalVoid (F f, B& b)
593
603
{
594
604
A a{};
595
605
b>>a;
596
606
f (a);
597
607
}
598
608
609
+ template <class F , class A , class B >
610
+ typename enable_if<And<ArgAcceptable<A>,is_same<A,const char *>>, void >::T
611
+ evalVoid (F f, B& b)
612
+ {
613
+ std::string a{};
614
+ b>>a;
615
+ const char * tmp=a.c_str ();
616
+ f (tmp);
617
+ }
618
+
599
619
template <class F , class A , class B >
600
620
typename enable_if<Not<ArgAcceptable<A>>, void >::T
601
621
evalVoid (F f, B& b)
0 commit comments