Pull to refresh
94
@izvolovread⁠-⁠only

Декомпозитор

Send message
удалить третий, пятый и 19-ый элемент

Никаких проблем. Можем сделать преобразователь, удаляющий n-й элемент по счёту, и собрать из них любую схему удалений.


начав проход со второго, а закончив на 3 элемента раньше конца

Границы удобнее задавать итераторами, но тоже можно, если хочется.


const auto result =
    proxima::reduce(items.begin() + 2, items.end() - 3,
        proxima::compose
        (
            drop_nth(3),
            drop_nth(5),
            drop_nth(19),
            proxima::sum
        ));

Довольно шустро, хотя специальных замеров не делал. С Ниблером несопоставимо :) .

Макросня не нужна: https://github.com/apolukhin/magic_get
А дальше хоть в json, хоть в xml, хоть куда.

Поздравляю со вступлением в клуб любителей шаблонов.
Желаю дальнейших успехов ;) .

Не думаю, что по 17-м плюсам необходим отдельный учебник.
Если нужно просто понять суть современных плюсов, то вполне достаточно последней редакции Страуструпа (она включает 14-й стандарт).
Также можно почитать Майерса — "Эффективный современный C++".


Вот про 20-й было бы неплохо отдельную книжку иметь, но мне такие неизвестны.

Ну, наверное, можно пройтись по ссылкам в конце статьи.
Или задать какой-нибудь конкретный вопрос, я постараюсь ответить.

Если автор не умеет понятно писать

Это можно легко проверить, заглянув в репозиторий.


избавлять императивный язык от циклов затея бестолковая

C++ — мультипарадигменный язык.


это надо делать до компиляции

Где доказательства? Чем обоснованы эти утверждения?
;)


ps

Я не могу к каждой шутливой фразе делать сноску "юмор".

Ничего подобного. Аргументы функции зафиксированы в шаблоне, поэтому сигнатура одинаковая.

Спасибо за вопрос. В текущей версии нет, но вообще, конечно, да. Просто пока не было времени реализовать. Если есть желание и возможность, с радостью приму помощь.

Это же просто std::function с методом run вместо круглых скобок.

Правильный ответ на любой подобный вопрос: "давайте сначала посмотрим, что скажет компилятор".
А компилятор скажет следующее:


prog.cc: In function 'void F1()':
prog.cc:8:28: warning: operation on 'i' may be undefined [-Wsequence-point]
    8 |   printf("%d, %d\n", i++, i++);
      |                           ~^~
prog.cc:8:28: warning: operation on 'i' may be undefined [-Wsequence-point]

Вот и весь разговор.

CMake способен правильно обрабатывать ситуацию с <> даже при разработке изолированной библиотеки.


См. инструкцию и проект-шаблон.

Делайте, как хотите. К CMake это отношения не имеет.

В директории src можно делать что угодно, т.к. это скрытая часть. В интерфейсе, то есть директории include, нужно обращаться по <>.


В любом случае, не вижу проблемы сделать так, как вам нужно.

Ну вот вы его и нашли. Начинать лучше отсюда: https://habr.com/ru/post/461817/

Всё это выглядит для меня странно, но могу предложить таки сделать папки полноценными CMake-модулями, которые будут устанавливаться. Просто прописать отдельный путь -DCMAKE_INSTALL_PREFIX=path/to/install, чтобы не захламлять систему.

А как гит может помешать собрать всё локально?

Information

Rating
Does not participate
Registered
Activity