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

FreeBSD Manual Pages

  
 
  

home | help
std::has_un...esentations(3)  C++ Standard Libary std::has_un...esentations(3)

NAME
       std::has_unique_object_representations  - std::has_unique_object_repre-
       sentations

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

	  If T is TriviallyCopyable and	if any two objects of type T with  the
       same value have
	  the  same  object representation, provides the member	constant value
       equal true. For
	  any other type, value	is false.

	  For the purpose of this trait, two arrays have  the  same  value  if
       their elements have
	  the  same values, two	non-union classes have the same	value if their
       direct
	  subobjects have the same value, and two unions have the  same	 value
       if they have the
	  same active member and the value of that member is the same.

	  It  is implementation-defined	which scalar types satisfy this	trait,
       but
	  unsigned
	  (until C++20)	integer	types that do not use padding bits are guaran-
       teed to have
	  unique object	representations.

	  The behavior is undefined if T is  an	 incomplete  type  other  than
       (possibly
	  cv-qualified)	void or	array of unknown bound.

	  The behavior of a program that adds specializations for
	  has_unique_object_representations  or	 has_unique_object_representa-
       tions_v is
	  undefined.

Template parameters
	  T - a	type to	check

	 Helper	variable template

	  template< class T >
	  inline   constexpr   bool   has_unique_object_representations_v    =
       (since C++17)
	  has_unique_object_representations<T>::value;

       Inherited from std::integral_constant

Member constants
	  value	    true if T has unique object	representations	, false	other-
       wise
	  [static] (public static member constant)

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

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

Notes
	  This trait was introduced to make it possible	to determine whether a
       type can	be
	  correctly hashed by hashing its object representation	as a byte  ar-
       ray.

	  Feature-test macro: __cpp_lib_has_unique_object_representations

Example
       // Run this code

	#include <iostream>
	#include <type_traits>

	struct foo
	{
	    char c;
	    float f;
	    short st;
	    int	i;
	};

	struct bar
	{
	    int	a;
	    int	b;
	};

	int main()
	{
	     std::cout	<< std::boolalpha
			<< "Does foo have unique object	representations? "
			<<   std::has_unique_object_representations_v<foo>  <<
       '\n'
			<< "Does bar have unique object	representations? "
			<<  std::has_unique_object_representations_v<bar>   <<
       '\n';
	}

Possible output:
	Does foo have unique object representations? false
	Does bar have unique object representations? true

See also
	  is_standard_layout checks if a type is a standard-layout type
	  (C++11)	     (class template)
	  hash		     hash function object
	  (C++11)	     (class template)

http://cppreference.com		  2022.07.31	  std::has_un...esentations(3)

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

home | help