Пишу велосипед (хочется мне так) форматирования сообщений а-ля питоний str.format, возник вопрос по дизайну.
Интерфейс простой - pattern и аргументы-параметры. Не могу решить, как лучше передавать эти аргументы. Пока надумались такие способы:
- format(«pattern», arg1, arg2) - как в python. Минусы - старый компилятор, variadic templates нет, придётся описывать все случаи (количество может до 30 штук варьироваться).
- format(«pattern»).arg(arg1).arg(arg2) - как в Qt. Минусы - возможное нагромождение arg'ов и скобочек (аллергия на скобочки у меня).
- format(«pattern») << arg1 << arg2 - как в IOStream. Минусы - загрязнять область имён операторами и вообще на операторы многие плюются.
Какой вариант лучше?
И ещё вопрос: возвращать ли string или какой-то объект, у которого есть метод .str()?