Я смог убрать предупреждение, изменив:
#define LOG_IF_FAILED(file_name, line, hr) if constexpr (FAILED(hr)) \
{ TRACE((TEXT("%s %i %s"), file_name, line, _com_error(hr).ErrorMessage())); }
на
#define LOG_IF_FAILED(file_name, line, hr) if constexpr (FAILED(hr)) \
{ TRACE(TEXT("%s %i %s"), file_name, line, _com_error(hr).ErrorMessage()); }
То есть: { TRACE((..., ..., ..., ...)); }
на { TRACE(..., ..., ..., ...); }
Но я должен признать, что я не знаю, есть ли какой-то другой непреднамеренный результат удаления лишних скобок.