@igor_akhmetov Если ответить развёрнуто и серьёзно: есть прекрасный
fmt::print(format_string, args...);, однако легко запутаться, когда выводишь несколько неоднородных параметров:
print("a = {}\n" "b = {}\n" "c = {}\n", a, b, c);. Особенно, когда там применяется сложное форматирование для каждого параметра. У fmt есть именованные параметры, это немного помогает. Чем хорош
std::cout, там выводимый контекст расположен близко
cout << "a = " << a << "\nb =" << b << "\nc =" << c << "\n"; Пример искусственны, но идея в том, что форматирование и то, что форматируется расположены рядом и это визуально легче воспринимается (по-крайней мере мной). Хорошо, если бы можно было писать
fmt::print("a = {}\n"_fmt, a, "b = {}\n"_fmt, b, "c = {}\n"_fmt, c);. Да, можно это записать просто в несколько вызовов print, это наглядно. Однако тут вступает в силу синдром premature optimization: можно же сфолдить все
""_fmt в компл-тайме в одну строку и скормить это
fmt::print за один вызов. Знаний, для того, чтобы это реализовать с разбега мне пока не хватает. Если мне сейчас дать готовый код — я, конечно, возрадуюсь, и буду пользоваться, но хочется разобраться в тонкостях самому.