### read

The `read` function is a composed operation that reads a certain amount of data from a stream before returning.

Attempt to read a certain amount of data from a stream before returning.

    template<
        typename SyncReadStream,
        typename MutableBufferSequence>
    std::size_t read(
        SyncReadStream & s,
        const MutableBufferSequence & buffers,
        constraint_t< is_mutable_buffer_sequence< MutableBufferSequence >::value >  = 0);
      » more...

    template<
        typename SyncReadStream,
        typename MutableBufferSequence>
    std::size_t read(
        SyncReadStream & s,
        const MutableBufferSequence & buffers,
        asio::error_code & ec,
        constraint_t< is_mutable_buffer_sequence< MutableBufferSequence >::value >  = 0);
      » more...

    template<
        typename SyncReadStream,
        typename MutableBufferSequence,
        typename CompletionCondition>
    std::size_t read(
        SyncReadStream & s,
        const MutableBufferSequence & buffers,
        CompletionCondition completion_condition,
        constraint_t< is_mutable_buffer_sequence< MutableBufferSequence >::value >  = 0);
      » more...

    template<
        typename SyncReadStream,
        typename MutableBufferSequence,
        typename CompletionCondition>
    std::size_t read(
        SyncReadStream & s,
        const MutableBufferSequence & buffers,
        CompletionCondition completion_condition,
        asio::error_code & ec,
        constraint_t< is_mutable_buffer_sequence< MutableBufferSequence >::value >  = 0);
      » more...

    template<
        typename SyncReadStream,
        typename DynamicBuffer_v1>
    std::size_t read(
        SyncReadStream & s,
        DynamicBuffer_v1 && buffers,
        constraint_t< is_dynamic_buffer_v1< decay_t< DynamicBuffer_v1 > >::value >  = 0,
        constraint_t< !is_dynamic_buffer_v2< decay_t< DynamicBuffer_v1 > >::value >  = 0);
      » more...

    template<
        typename SyncReadStream,
        typename DynamicBuffer_v1>
    std::size_t read(
        SyncReadStream & s,
        DynamicBuffer_v1 && buffers,
        asio::error_code & ec,
        constraint_t< is_dynamic_buffer_v1< decay_t< DynamicBuffer_v1 > >::value >  = 0,
        constraint_t< !is_dynamic_buffer_v2< decay_t< DynamicBuffer_v1 > >::value >  = 0);
      » more...

    template<
        typename SyncReadStream,
        typename DynamicBuffer_v1,
        typename CompletionCondition>
    std::size_t read(
        SyncReadStream & s,
        DynamicBuffer_v1 && buffers,
        CompletionCondition completion_condition,
        constraint_t< is_dynamic_buffer_v1< decay_t< DynamicBuffer_v1 > >::value >  = 0,
        constraint_t< !is_dynamic_buffer_v2< decay_t< DynamicBuffer_v1 > >::value >  = 0);
      » more...

    template<
        typename SyncReadStream,
        typename DynamicBuffer_v1,
        typename CompletionCondition>
    std::size_t read(
        SyncReadStream & s,
        DynamicBuffer_v1 && buffers,
        CompletionCondition completion_condition,
        asio::error_code & ec,
        constraint_t< is_dynamic_buffer_v1< decay_t< DynamicBuffer_v1 > >::value >  = 0,
        constraint_t< !is_dynamic_buffer_v2< decay_t< DynamicBuffer_v1 > >::value >  = 0);
      » more...

    template<
        typename SyncReadStream,
        typename Allocator>
    std::size_t read(
        SyncReadStream & s,
        basic_streambuf< Allocator > & b);
      » more...

    template<
        typename SyncReadStream,
        typename Allocator>
    std::size_t read(
        SyncReadStream & s,
        basic_streambuf< Allocator > & b,
        asio::error_code & ec);
      » more...

    template<
        typename SyncReadStream,
        typename Allocator,
        typename CompletionCondition>
    std::size_t read(
        SyncReadStream & s,
        basic_streambuf< Allocator > & b,
        CompletionCondition completion_condition);
      » more...

    template<
        typename SyncReadStream,
        typename Allocator,
        typename CompletionCondition>
    std::size_t read(
        SyncReadStream & s,
        basic_streambuf< Allocator > & b,
        CompletionCondition completion_condition,
        asio::error_code & ec);
      » more...

    template<
        typename SyncReadStream,
        typename DynamicBuffer_v2>
    std::size_t read(
        SyncReadStream & s,
        DynamicBuffer_v2 buffers,
        constraint_t< is_dynamic_buffer_v2< DynamicBuffer_v2 >::value >  = 0);
      » more...

    template<
        typename SyncReadStream,
        typename DynamicBuffer_v2>
    std::size_t read(
        SyncReadStream & s,
        DynamicBuffer_v2 buffers,
        asio::error_code & ec,
        constraint_t< is_dynamic_buffer_v2< DynamicBuffer_v2 >::value >  = 0);
      » more...

    template<
        typename SyncReadStream,
        typename DynamicBuffer_v2,
        typename CompletionCondition>
    std::size_t read(
        SyncReadStream & s,
        DynamicBuffer_v2 buffers,
        CompletionCondition completion_condition,
        constraint_t< is_dynamic_buffer_v2< DynamicBuffer_v2 >::value >  = 0);
      » more...

    template<
        typename SyncReadStream,
        typename DynamicBuffer_v2,
        typename CompletionCondition>
    std::size_t read(
        SyncReadStream & s,
        DynamicBuffer_v2 buffers,
        CompletionCondition completion_condition,
        asio::error_code & ec,
        constraint_t< is_dynamic_buffer_v2< DynamicBuffer_v2 >::value >  = 0);
      » more...

##### Requirements

Header: `asio/impl/read.hpp`

Convenience header: `asio.hpp`