The C++ standard does not allow explicit specialization of a member of a class at class scope.
A canonical work-around to allow what in effect would behave like an explicit specialization inside the class is to use an extra unused template parameter with a default value:
1 2 3 4 5 6 7 8 9 10 11
template<bool CONDITION, typename THEN, typename ELSE>
struct IF
{
template< bool C, typename fake = void >
struct selector { using selected = THEN; };
template< typename fake >
struct selector<false,fake> { using selected = ELSE; };
using result = typename selector<CONDITION>::selected;
};