Что-то я торможу. Я хочу так:
Timer<uint16_t> tim; // compiles
Timer<uint32_t> tim; // compiles
Timer<anything_else> tim; // does not compile
Я так понимаю, мне надо enable_if или вручную SFINAE? Но я совсем забыл синтаксис базового класса, который должен не компилироваться и его специализации. Напомните пожалуйста
template<typename T>
class Timer {
какой-то бред
void F();
};
template<> Timer<uint16_t> { как убрать бред }
template<> Timer<uint32_t> { как убрать бред }
Так?
template<
typename ResolutionType,
typename = typename std::enable_if<
std::is_same<uint16_t, ResolutionType>::value ||
std::is_same<uint32_t, ResolutionType>::value,
ResolutionType
>::type
>
template<typename ResolutionType>
class Timer {
void F();
}