LINUX.ORG.RU

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

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

но вот в asio прям магии магии я не наблюдал

Давай рассмотрим операцию чтения.

Вот функция чтения из стандартной библиотеки:

ssize_t read(int fd, void *buf, size_t count);
Тут все просто и понятно. Прочитав man можно быстро понять, как пользоваться read().

А вот пример из asio:

template<
    typename SyncReadStream,
    typename MutableBufferSequence>
std::size_t read(
    SyncReadStream & s,
    const MutableBufferSequence & buffers,
    typename enable_if< is_mutable_buffer_sequence< MutableBufferSequence >::value >::type *  = 0);

Если мы хотим быстро глянуть в API reference и начать писать код, то со во вторым случаем будут проблемы. Надо разбираться с этим MutableBufferSequence, enable_if и прочим. Что это такое? Что можно? Чего нельзя? Нужно глубоко погрузиться в изучение библиотеки. Поэтому и высокий начальный порог вхождения.

Да, и если в код не собирается, то компилятор порадует полотном трудночитаемого сообщения об ошибке.

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

но вот в asio прям магии магии я не наблюдал

Давай рассмотрим операцию чтения.

Вот функция чтения из стандартной библиотеки:

ssize_t read(int fd, void *buf, size_t count);
Тут все просто и понятно. Прочитав man можно быстро понять, как пользоваться read().

А вот пример из asio:

template<
    typename SyncReadStream,
    typename MutableBufferSequence>
std::size_t read(
    SyncReadStream & s,
    const MutableBufferSequence & buffers,
    typename enable_if< is_mutable_buffer_sequence< MutableBufferSequence >::value >::type *  = 0);

Если мы хотим быстро глянуть в API reference и начать писать код, то со во вторым случаем будут проблемы. Надо разбираться с этим MutableBufferSequence, enable_if и прочим. Что это такое? Что можно? Чего нельзя? Нужно глубоко погрузиться в изучение библиотеки. Поэтому и высокий начальный порог вхождения.

Да, и если в коде ошибка, то компилятор порадует полотном трудночитаемого сообщения об ошибке.