SFINAE tried with bool gives compiler error: “template argument ‘T::value’ involves template parameter” [duplicate]
Actually what you’re doing is forbidden by section §14.5.4/9 which says, A partially specialized non-type argument expression shall not involve a template parameter of the partial specialization except when the argument expression is a simple identifier. The trick could be using a type for second template parameter as well, encapsulating the non-type value, as described … Read more