Если я вас правильно понимаю, вам понадобится одно из следующих:
enable_if
в типе возвращаемого значения функции, которую вы не хотите включать / отключать (у вас все еще может быть функция return bool
):
template <typename T>
constexpr typename std::enable_if<type != type1, bool>::type
func(SomethingElse<T>)
{
return true;
}
или заявление о подтверждении состояния c:
template <typename T>
constexpr bool func(SomethingElse<T>)
{
static_assert(type != type1, "can't call this with type1...");
return true;
}
Третий вариант - перемещение функции, которая должна быть отключена в базовом классе. Затем специализируйте эту базу для type1
и оставьте ее пустой:
template<MyType mytype>
struct SpecialStuff {
bool func();
};
template<>
struct SpecialStuff<type1> {
};
template<MyType mytype>
struct CommonStuff : private SpecialStuff<mytype> {
};