Size: a a a

2020 August 14

ПК

Побитый Кирпич... in supapro.cxx
Дмитрий Олегович
На общую аудиторию спрашивать не хочется, проще с человеком переговорить 1 на 1
раз на раз только за рублики
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Danya
Чтобы std::make_index_seq не в аргументы передавать, а он сам "вызвал" её
Нет, нужно иметь индексы паком
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Егор
а в 20-м с темплейтед лямбдами нельзя это как-то внутри одной функции сделать?
Можно
источник

D

Danya in supapro.cxx
Побитый Кирпич
template <size_t... I>
void call_foo(std::index_sequence<I...>) {
 (foo<I>(), ...);
}
Если будет так:
template <size_t... I, typename... Args>
void call_foo(std::index_sequence<I...>) {
 (foo<I, Args...>(), ...);
}

call_foo<T1, T2, T3>(std::make_index_sequence<n>{});
Заработает?)
источник

D

Danya in supapro.cxx
Не будет ли он в шаблоне foo ещё и I пытаться раскрыть первым ...
источник

D

Danya in supapro.cxx
Пойду проверю
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Danya
Если будет так:
template <size_t... I, typename... Args>
void call_foo(std::index_sequence<I...>) {
 (foo<I, Args...>(), ...);
}

call_foo<T1, T2, T3>(std::make_index_sequence<n>{});
Заработает?)
Думаю нет
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
template <typename... Ts> struct type_list {} спасет
источник

Е

Егор in supapro.cxx
Danya
Если будет так:
template <size_t... I, typename... Args>
void call_foo(std::index_sequence<I...>) {
 (foo<I, Args...>(), ...);
}

call_foo<T1, T2, T3>(std::make_index_sequence<n>{});
Заработает?)
мб местами поменять паки
источник

D

Danya in supapro.cxx
Егор
мб местами поменять паки
Тогда точно дедусить не будет
источник

D

Danya in supapro.cxx
Хотя стоп
источник

D

Danya in supapro.cxx
Егор
мб местами поменять паки
Ля работает
источник

D

Danya in supapro.cxx
источник

Е

Егор in supapro.cxx
Danya
Ля работает
это компили выходит умеют различать тайп и нон-тайп параметры
источник

D

Danya in supapro.cxx
Егор
это компили выходит умеют различать тайп и нон-тайп параметры
Ещё бы не умели)
источник

D

Danya in supapro.cxx
посмотрим что на ревью скажут)))
источник

M

Maksim in supapro.cxx
Зачем нужно писать &ch? Я понимаю, что если не написать, то ничего не будет работать. Это такое устройство for_each?

size_t count = count_if(str.begin(), str.end(), [](char ch) {
     return isupper(ch);
   });


if ((count == str.length()) ||
       (count == str.length() - 1 && islower(str.front()))) {
       bool flag = true;
       
       for_each(str.begin(), str.end(), [&] (char &ch) {
           if(ch == toupper(ch))
             ch = tolower(ch);
             
           else if (flag) {
             ch = toupper(ch);
             flag = false;
           }
           else ch = tolower(ch);
           
       });
источник

AP

Alexander Potapov in supapro.cxx
По ссылке передать символ в лямбду
источник

AS

Anatoly Shirokov in supapro.cxx
Maksim
Зачем нужно писать &ch? Я понимаю, что если не написать, то ничего не будет работать. Это такое устройство for_each?

size_t count = count_if(str.begin(), str.end(), [](char ch) {
     return isupper(ch);
   });


if ((count == str.length()) ||
       (count == str.length() - 1 && islower(str.front()))) {
       bool flag = true;
       
       for_each(str.begin(), str.end(), [&] (char &ch) {
           if(ch == toupper(ch))
             ch = tolower(ch);
             
           else if (flag) {
             ch = toupper(ch);
             flag = false;
           }
           else ch = tolower(ch);
           
       });
чтобы измененное значение было видно вызывающей стороне.
источник

M

Maksim in supapro.cxx
А почему в лямбда выражении внутри count_if не нужно передавать ссылку?
источник