table of contents
        
      
      
    - Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| std::as_bytes,std::as_writable_bytes(3) | C++ Standard Libary | std::as_bytes,std::as_writable_bytes(3) | 
NAME¶
std::as_bytes,std::as_writable_bytes - std::as_bytes,std::as_writable_bytes
Synopsis¶
 Defined in header <span>
  
   template< class T, std::size_t N >
  
   std::span<const std::byte, S/* see below */> (1) (since
    C++20)
  
   as_bytes( std::span<T, N> s ) noexcept;
  
   template< class T, std::size_t N >
  
   std::span<std::byte, S/* see below */> (2) (since
  C++20)
  
   as_writable_bytes( std::span<T, N> s ) noexcept;
  
   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.
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()}.
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 }
See also¶
 start_lifetime_as implicitly creates objects in given storage
    with the object
  
   start_lifetime_as_array representation reused
  
   (C++23) (function template)
  
   byte the byte type
  
   (C++17) (enum)
| 2024.06.10 | http://cppreference.com |