std::as_bytes, std::as_writable_bytes
From cppreference.com
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Containers library
(C++17)
(C++11)
(C++26)
(C++26)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++23)
(C++23)
(C++23)
(C++23)
(C++20)
(C++23)
Tables
std::span
(C++26)
(C++23)
(C++23)
(C++23)
(C++23)
as_bytesas_writable_bytes
Defined in header
<span>
template< class T, std::size_t N >
(1)
(since C++20)
std::span <const std::byte, S/* see below */>
template< class T, std::size_t N >
(2)
(since C++20)
std::span <std::byte, S/* see below */>
Obtains a view to the object representation of the elements of the span s.
If N
is std::dynamic_extent, the extent of the returned span S
is also std::dynamic_extent; otherwise it is sizeof(T) * N.
as_writable_bytes
only participates in overload resolution if std::is_const_v <T> is false.
[edit] Return value
1) A span constructed with {reinterpret_cast<const std::byte *>(s.data()), s.size_bytes()}.
2) A span constructed with {reinterpret_cast<std::byte *>(s.data()), s.size_bytes()}.
[edit] Example
Run this code
#include <cstddef> #include <iomanip> #include <iostream> #include <span> void print(float const x, std::span <const std::byte > const bytes) { std::cout << std::setprecision (6) << std::setw (8) << x << " = { " << std::hex << std::uppercase << std::setfill ('0'); for (auto const b : bytes) std::cout << std::setw (2) << std::to_integer <int>(b) << ' '; std::cout << std::dec << "}\n"; } int main() { /* mutable */ float data[1]{3.141592f}; auto const const_bytes = std::as_bytes(std::span {data}); print(data[0], const_bytes); auto const writable_bytes = std::as_writable_bytes(std::span {data}); // Change the sign bit that is the MSB (IEEE 754 Floating-Point Standard). writable_bytes[3] |= std::byte {0B1000'0000}; print(data[0], const_bytes); }
Possible output:
3.14159 = { D8 0F 49 40 } -3.14159 = { D8 0F 49 C0 }
[edit] See also
implicitly creates objects in given storage with the object representation reused
(function template) [edit]
(function template) [edit]