Здравствуйте, Videoman, Вы писали:
V>Здравствуйте, Sm0ke, Вы писали:
S>>Привет
S>>помогите принять решение
V>Сам перешел от 3-го варианта к 1-му. Для меня стало намного удобнее. На практике длина имен с префиксом и с указанием пространства имен не отличается, по сути это тоже самое, но появились дополнительные плюсы:
V>- внутри подсистемы не нужно указывать префикс
V>- названия становятся короче из-за контекста
V>- часто в локальном контексте можно сделать using some_namespace и работать без префиксов.
V>- выбор названий подсистем стал понятнее и осмысленнее
V>У меня прижился первый вариант
В таком случае возможно для concat() будут отдельные определения, а не перегрузка
just::st::concat<>() // для compile-time текста в параметрах шаблона (он уже написан)
just::str::concat() // для run-time строк, если я однажды возьмусь их в либу добавлять
Кстати concat у меня работает с переменным числом параметров (можно больше двух)
Думал сперва его назвать implode() как в php
--
side test с перегрузкой функции:
#include <cstddef>
struct st {};
using index = std::ptrdiff_t;
template <st ... T> void fn() {}
template <index ... I> void fn() {}
int main ()
{
fn<st{}>();
fn<5>();
return 0;
}