#include <iostream>
#include <type_traits>

template <typename T,typename Enable=void>
struct test
{
	const char* value = "Primary";
};

#if 1 // toggle this

template <typename T>
struct test<T,typename std::enable_if< std::is_same<T,T>::value >::type > 
{
	const char* value = "Specialization";
};

#else

template <typename T>                                    
struct test<T,typename std::enable_if< std::is_same<T,T>::value,T >::type> 
{                                                          ///  ^    
	const char* value = "Specialization";
};

#endif

int main() {
	test<int> v;
	std::cout << v.value << std::endl;
	return 0;
}