Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::endian(3)		      C++ Standard Libary		std::endian(3)

NAME
       std::endian - std::endian

Synopsis
	  Defined in header <bit>
	  enum class endian

	  {
	  little = /*implementation-defined*/,	(since C++20)
	  big =	/*implementation-defined*/,
	  native = /*implementation-defined*/

	  };

	  Indicates the	endianness of all scalar types:

	    *  If  all	scalar	types  are  little-endian, std::endian::native
       equals
	      std::endian::little
	    * If all scalar types are big-endian,  std::endian::native	equals
       std::endian::big

	  Corner case platforms	are also supported:

	    *  If all scalar types have	sizeof equal to	1, endianness does not
       matter and all
	      three   values,	std::endian::little,   std::endian::big,   and
       std::endian::native are
	      the same.
	    *  If  the	platform uses mixed endian, std::endian::native	equals
       neither
	      std::endian::big nor std::endian::little.

Possible implementation
	enum class endian
	{
	#ifdef _WIN32
	    little = 0,
	    big	   = 1,
	    native = little
	#else
	    little = __ORDER_LITTLE_ENDIAN__,
	    big	   = __ORDER_BIG_ENDIAN__,
	    native = __BYTE_ORDER__
	#endif
	};

Notes
	  Feature-test macro: __cpp_lib_endian

Example
       // Run this code

	#include <bit>
	#include <iostream>

	int main() {

	    if constexpr (std::endian::native == std::endian::big)
		std::cout << "big-endian\n";
	    else if constexpr (std::endian::native == std::endian::little)
		std::cout << "little-endian\n";
	    else std::cout << "mixed-endian\n";
	}

Possible output:
	little-endian

See also
	  byteswap reverses the	bytes in the given integer value
	  (C++23)  (function template)

http://cppreference.com		  2022.07.31			std::endian(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::endian&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help