История изменений
Исправление pathfinder, (текущая версия) :
но вот в asio прям магии магии я не наблюдал
Давай рассмотрим операцию чтения.
Вот функция чтения из стандартной библиотеки:
ssize_t read(int fd, void *buf, size_t count);
А вот пример из 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);
А вот пример из 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 и прочим. Что это такое? Что можно? Чего нельзя? Нужно глубоко погрузиться в изучение библиотеки. Поэтому и высокий начальный порог вхождения.
Да, и если в коде ошибка, то компилятор порадует полотном трудночитаемого сообщения об ошибке.