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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::alignment_of - std::alignment_of

Synopsis
	  Defined in header <type_traits>
	  template< class T >		   (since C++11)
	  struct alignment_of;

	  Provides  the	 member	constant value equal to	the alignment require-
       ment of the type	T,
	  as if	obtained by an alignof expression. If T	is an array type,  re-
       turns the
	  alignment  requirements  of  the  element  type. If T	is a reference
       type, returns the
	  alignment requirements of the	type referred to.

	  If alignof(T)	is not a valid expression, the behavior	is undefined.

	  The behavior of a program that adds specializations for alignment_of
	  or alignment_of_v
	  (since C++17)	is undefined.

	 Helper	variable template

	  template<		    class		  T		     >
       (since C++17)
	  inline     constexpr	  std::size_t	 alignment_of_v	   =	align-
       ment_of<T>::value;

       Inherited from std::integral_constant

Member constants
	  value	   alignof(T)
	  [static] (public static member constant)

Member functions
	  operator std::size_t converts	the  object  to	 std::size_t,  returns
       value
			       (public member function)
	  operator()	       returns value
	  (C++14)	       (public member function)

Member types
	  Type	     Definition
	  value_type std::size_t
	  type	     std::integral_constant<std::size_t, value>

Possible implementation
	  template< class T >
	  struct alignment_of :	std::integral_constant<
				    std::size_t,
				    alignof(T)
				 > {};

Notes
	  This	type  trait predates the alignof keyword, which	can be used to
       obtain the same
	  value	with less verbosity.

Example
       // Run this code

	#include <cstdint>
	#include <iostream>
	#include <type_traits>

	struct A {};
	struct B {
	    std::int8_t	p;
	    std::int16_t q;
	};

	int main()
	{
	    std::cout << std::alignment_of<A>::value <<	' ';
	    std::cout << std::alignment_of<B>::value <<	' ';
	    std::cout << std::alignment_of<int>() << ' '; // alt syntax
	    std::cout << std::alignment_of_v<double> <<	 '\n';	//  c++17  alt
       syntax
	}

Possible output:
	1 2 4 8

See also
	  alignof  operator(C++11)	 queries  alignment  requirements of a
       type
	  alignas specifier(C++11)     specifies  that	the  storage  for  the
       variable	should be
				       aligned by specific amount
	  aligned_storage		defines	 the  type suitable for	use as
       uninitialized
	  (C++11)(deprecated in	C++23) storage for types of given size
				       (class template)
	  aligned_union		       defines the type	suitable  for  use  as
       uninitialized
	  (C++11)(deprecated in	C++23) storage for all given types
				       (class template)
	  max_align_t		       trivial type with alignment requirement
       as great	as any
	  (C++11)		       other scalar type
				       (typedef)

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

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

home | help