Size: a a a

2020 July 22

ПК

Побитый Кирпич... in supapro.cxx
Короче, делаешь get_separator(int index), можно лямбдой
И потом что то типа:

std::string join(Args&& ... args) {
       int i = 0;
       return Open + (... + (fmt::to_string(std::forward<decltype(args)>(args))+get_separator(++i))) + Close;
   }
источник

D

Danya in supapro.cxx
Егор
я синтаксис не осилил
Лучше просто сделай в стиле С++11
Читать проще будет
источник

ПК

Побитый Кирпич... in supapro.cxx
Побитый Кирпич
Короче, делаешь get_separator(int index), можно лямбдой
И потом что то типа:

std::string join(Args&& ... args) {
       int i = 0;
       return Open + (... + (fmt::to_string(std::forward<decltype(args)>(args))+get_separator(++i))) + Close;
   }
Если делать лямбдой то ты в ней сможешь знать кол-во элементов в args, то есть у тебя есть знание когда какой сепаратор делать. Для последнего делаешь пустой
источник

DP

Denis Paukaev in supapro.cxx
template<typename T, typename... Ts>
auto Join(const T& t, const Ts&... ts) {
   std::string result = t;

   return (..., ((result += ':') += ts));
}
источник

Е

Егор in supapro.cxx
Побитый Кирпич
Короче, делаешь get_separator(int index), можно лямбдой
И потом что то типа:

std::string join(Args&& ... args) {
       int i = 0;
       return Open + (... + (fmt::to_string(std::forward<decltype(args)>(args))+get_separator(++i))) + Close;
   }
еще бы знать что возвращать вместо сепаратора, учитывая тип char
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Егор
Вставить при вызове имеешь ввиду?
Вызвать _impl с dummy_t на конце
источник

DP

Denis Paukaev in supapro.cxx
библиотеку сразу напишите, чего уж тут
источник

ПК

Побитый Кирпич... in supapro.cxx
Егор
еще бы знать что возвращать вместо сепаратора, учитывая тип char
Ну видимо std::string. Для маленькой строки не будет алокаций всё равно
источник

Е

Егор in supapro.cxx
Denis Paukaev
template<typename T, typename... Ts>
auto Join(const T& t, const Ts&... ts) {
   std::string result = t;

   return (..., ((result += ':') += ts));
}
во, это самое красивое
источник

Е

Егор in supapro.cxx
всем спасибо
источник

s

std::slavik in supapro.cxx
Anatoly Shirokov
почему копирование а не обмен?
да я уже третий день пытаюсь донести это) но откуда-то все равно возникает копирование которое тормозит
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Denis Paukaev
template<typename T, typename... Ts>
auto Join(const T& t, const Ts&... ts) {
   std::string result = t;

   return (..., ((result += ':') += ts));
}
Почему левая, а не правая свертка?
источник

DP

Denis Paukaev in supapro.cxx
Artöm Bakri Al-Sarmini
Почему левая, а не правая свертка?
мне так захотелось, а что?
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Прост
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Denis Paukaev
template<typename T, typename... Ts>
auto Join(const T& t, const Ts&... ts) {
   std::string result = t;

   return (..., ((result += ':') += ts));
}
return отдельной строкой надо, иначе пустой пак сфейлится
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Либо ассерт вставить
источник

Е

Егор in supapro.cxx
Artöm Bakri Al-Sarmini
return отдельной строкой надо, иначе пустой пак сфейлится
А как ретурн поможет? Там ведь минимум 1 элемент нужен из-за T
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Егор
А как ретурн поможет? Там ведь минимум 1 элемент нужен из-за T
Если пак пустой, фолд имеет тип воид
источник

Е

Егор in supapro.cxx
Artöm Bakri Al-Sarmini
Если пак пустой, фолд имеет тип воид
А, именно пак имеется ввиду, понял
источник

DP

Denis Paukaev in supapro.cxx
Artöm Bakri Al-Sarmini
return отдельной строкой надо, иначе пустой пак сфейлится
return (..., ((result += ':') += ts)), result;


так лучше?)
источник