LINUX.ORG.RU

История изменений

Исправление Dudraug, (текущая версия) :

В первом случае, как и в C++, надо вставить аналог toupper в лямбду, во втором можно сразу использовать string-lessp, которая сравнивает строки без учёта регистра.

Ну так это тоже самое что

return std::make_tuple(to_upper(f.name), f.department_id, f.additional_data) < std::make_tuple(to_upper(s.name), s.department_id, s.additional_data);

...

return std::make_tuple(to_upper(f.name), f.department_id) < std::make_tuple(to_upper(s.name), s.department_id);
...

return std::tie(f.name, f.department_id) < std::make_tie(s.name, s.department_id);

...
return std::tie(f.name) < std::make_tie(s.name);

?

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

Исходная версия Dudraug, :

В первом случае, как и в C++, надо вставить аналог toupper в лямбду, во втором можно сразу использовать string-lessp, которая сравнивает строки без учёта регистра.

Ну так это тоже самое что

return std::make_tuple(to_upper(f.name), f.department_id, f.additional_data) < std::make_tuple(to_upper(s.name), s.department_id, s.additional_data);

...

return std::make_tuple(to_upper(f.name), f.department_id) < std::make_tuple(to_upper(s.name), s.department_id);
...

return std::tie(f.name, f.department_id) < std::make_tie(s.name, s.department_id);

...
return std::tie(f.name) < std::make_tie(s.name);



?

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