### read_at

Attempt to read a certain amount of data at the specified offset before returning.

    template<
        typename SyncRandomAccessReadDevice,
        typename MutableBufferSequence>
    std::size_t read_at(
        SyncRandomAccessReadDevice & d,
        boost::uint64_t offset,
        const MutableBufferSequence & buffers);

    template<
        typename SyncRandomAccessReadDevice,
        typename MutableBufferSequence,
        typename CompletionCondition>
    std::size_t read_at(
        SyncRandomAccessReadDevice & d,
        boost::uint64_t offset,
        const MutableBufferSequence & buffers,
        CompletionCondition completion_condition);

    template<
        typename SyncRandomAccessReadDevice,
        typename MutableBufferSequence,
        typename CompletionCondition>
    std::size_t read_at(
        SyncRandomAccessReadDevice & d,
        boost::uint64_t offset,
        const MutableBufferSequence & buffers,
        CompletionCondition completion_condition,
        asio::error_code & ec);

    template<
        typename SyncRandomAccessReadDevice,
        typename Allocator>
    std::size_t read_at(
        SyncRandomAccessReadDevice & d,
        boost::uint64_t offset,
        basic_streambuf< Allocator > & b);

    template<
        typename SyncRandomAccessReadDevice,
        typename Allocator,
        typename CompletionCondition>
    std::size_t read_at(
        SyncRandomAccessReadDevice & d,
        boost::uint64_t offset,
        basic_streambuf< Allocator > & b,
        CompletionCondition completion_condition);

    template<
        typename SyncRandomAccessReadDevice,
        typename Allocator,
        typename CompletionCondition>
    std::size_t read_at(
        SyncRandomAccessReadDevice & d,
        boost::uint64_t offset,
        basic_streambuf< Allocator > & b,
        CompletionCondition completion_condition,
        asio::error_code & ec);