| 1217 | |
| 1218 | template<class Seq> |
| 1219 | auto buffer_contiguous_sequence(Seq &&seq) noexcept |
| 1220 | -> decltype(buffer(std::addressof(*std::begin(seq)), size_t{})) |
| 1221 | { |
| 1222 | using T = typename std::remove_cv< |
| 1223 | typename std::remove_reference<decltype(*std::begin(seq))>::type>::type; |
| 1224 | static_assert(detail::is_pod_like<T>::value, "T must be POD"); |
| 1225 | |
| 1226 | const auto size = seq_size(seq); |
| 1227 | return buffer(size != 0u ? std::addressof(*std::begin(seq)) : nullptr, |
| 1228 | size * sizeof(T)); |
| 1229 | } |
| 1230 | template<class Seq> |
| 1231 | auto buffer_contiguous_sequence(Seq &&seq, size_t n_bytes) noexcept |
| 1232 | -> decltype(buffer_contiguous_sequence(seq)) |