Я хочу отключить метод no-arg в этом классе, если тип T
, содержащийся в классе, может быть приведен к типу bool.
Я пробовал некоторые вещи SFINAE сenable_if
, однако я столкнулся с множеством проблем при этом.Возможно ли то, что я хочу?
template <typename T>
struct Watch {
T t;
// Enable if and only if bool(t) can be performed
void stop() {
// ...
}
void stop(int secondsFromNow) {
// ...
}
};
int main() {
Watch<int> watch;
watch.stop();
watch.stop(5);
Watch<string> watchStr;
//watchStr.stop();
watchStr.stop(2);
}
Прочитав много постов о переполнении стека о сокрытии вещей с помощью SFINAE и шаблонов, я не смог заставить другие вещи работать на меня.
Какможно сделать вызов stop()
для Watch
с элементом, который не преобразуется в логический сбой во время компиляции, если кто-то попытается вызвать его, не затрагивая другие методы?