@ 101010 в ответ хорошо. Но в интересах тех, у кого есть старые компиляторы (которые, как я подозреваю, не согласны с этим синтаксисом), существует альтернативный подход.
Первое:
Функция шаблона декларация, без определения/реализации. Таким образом, если вы его случайно назовете func("false")
или func('y')
или func(0)
(int), компоновщик будет жаловаться. Это заставит вас искать проблему.
template<typename T> void func(T a); // prototype only
Объявите это наряду с вашей реальной void func(bool a)
функции.
Если у вас есть это внутри класса, вы можете сделать функцию/метод шаблона конфиденциальной, что сделает ошибку в ошибке компилятора (проще понять, но если случайный неправильно введенный вызов происходит из класса или друг, он все равно будет ошибкой компоновщика).
Указатель будет неявно преобразован в bool. Null pointer -> false, Non-null pointer -> true. В этом случае func получит значение * true * из ненулевой «ложной» строки в const char *. –
@SingerOfTheFall Хорошо, я повторно разместил его. –
есть какой-либо способ, с помощью которого я могу явно принять его для принятия boolean – waz