И Clang, и GCC могут проверять функции в стиле printf на предмет несоответствия между их строками формата и их аргументами. Например, они будут жаловаться на такие заявления:
printf("Hello, %s!\n");
Существует ли что-нибудь подобное для Boost.Format? Другими словами, есть ли какие-либо переключатели компилятора, инструменты статического анализа и т. Д., Которые могут предупреждать о таком коде, как
std::string s1 = str(boost::format("Hello, %s!"));
или же
std::string s2 = str(boost::format("Hello, %s!") % "John" % "Doe");
Похоже, это не поддерживается
Билет был создан на повышение, чтобы отследить его.
Возможно, вы захотите подобрать транковую версию, если она вам действительно нужна.
Других решений пока нет …