Самый гибкий способ предоставления печатаемости типу

Например, я разрабатываю свой библиотечный тип A. Как лучше всего предоставить способ его печати, чтобы любой пользователь мог его использовать?

std::ostream operator<<(std::ostream&, const A&);

не всегда удобен, т.к. клиент может не использовать iostream (из-за размеров и перформанса), не все логирующие библиотеки его поддерживают

std::string to_string(const A&); (или метод)

уже выглядит гибче, но при этом динамически выделяет память под строку, что тоже не все клиенты могут позволить

const char* to_string(const A&);

непонятно кто выделяет память

void to_string(char* res, const A&);

вроде бы самый гибкий, но при это out параметр не хочется использовать

Есть ли какие-то практики как лучше всего сделать?


Ответы (0 шт):