Boost.Asio如何创建一个大小等于数组大小的缓冲区对象

How can Boost.Asio create a buffer object of size equal to the size of the array?

本文关键字:于数组 小等 对象 缓冲区 数组 何创建 Asio 创建 Boost 一个      更新时间:2023-10-16

考虑以下行(Boost/C++):

char d1[128];
size_t bytes_transferred = sock.receive(boost::asio::buffer(d1));

Boost.Asio 文档指出创建了一个大小为 128 的缓冲区。

但是 Boost 如何确定阵列的大小呢?我已经读过几个问题,答案是数组的大小不能在C++中确定。

对于

编译时已知大小的数组,有模板专用化 http://www.boost.org/doc/libs/1_60_0/doc/html/boost_asio/reference/buffer/overload7.html

template<
    typename PodType,
    std::size_t N>
mutable_buffers_1 buffer(
    PodType (&data)[N]);

在C++中,'char[5]'、'char[128]'和'char*'是不同的类型,因此编译器可以利用这个 http://www.cplusplus.com/faq/sequences/arrays/sizeof-array/#cpp