Я бы не использовал:
bool b = !!t;
Это наименее читаемый способ (и, следовательно, труднее всего поддерживать)
Остальные зависят от ситуации.
Если вы конвертируете для использования только в выражении bool.
bool b = t ? true : false;
if (b)
{
doSomething();
}
Тогда я бы позволил языку сделать это для вас:
if (t)
{
doSomething();
}
Если вы на самом деле храните логическое значение. Тогда сначала я бы удивился, почему у вас длинные места в первых местах, где требуется актерский состав. Предполагая, что вам нужны long и значение bool, я рассмотрю все следующее в зависимости от ситуации.
bool b = t ? true : false; // Short and too the point.
// But not everybody groks this especially beginners.
bool b = (t != 0); // Gives the exact meaning of what you want to do.
bool b = static_cast<bool>(t); // Implies that t has no semantic meaning
// except as a bool in this context.
Резюме:
Используйте то, что обеспечивает наибольшее значение для контекста, в котором вы находитесь.
Попробуйте и сделайте очевидным, что вы делаете