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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::negation - std::negation

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

	  Forms	the logical negation of	the type trait B.

	  The type std::negation<B> is a UnaryTypeTrait	with a base character-
       istic of
	  std::bool_constant<!bool(B::value)>.

	  The  behavior	of a program that adds specializations for negation or
       negation_v is
	  undefined.

Template parameters
	  B - any type such that the expression	bool(B::value) is a valid con-
       stant expression

	 Helper	variable template

	  template<class    B>						(since
       C++17)
	  inline constexpr bool	negation_v = negation<B>::value;

       Inherited from std::integral_constant

Member constants
	  value	    true  if B has a member ::value that is false when explic-
       itly converted to
	  [static] bool	, false	otherwise
		   (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>

Possible implementation
	  template<class B>
	  struct negation : std::bool_constant<!bool(B::value)>	{ };

Notes
	  Feature-test macro: __cpp_lib_logical_traits

Example
       // Run this code

	#include <iostream>
	#include <type_traits>

	static_assert(
	    std::is_same<
		std::bool_constant<false>,
		typename			  std::negation<std::bool_con-
       stant<true>>::type>::value,
	    "");
	static_assert(
	    std::is_same<
		std::bool_constant<true>,
		typename			  std::negation<std::bool_con-
       stant<false>>::type>::value,
	    "");

	int main()
	{
	    std::cout << std::boolalpha;
	    std::cout  <<  std::negation<std::bool_constant<true>>::value   <<
       '\n';
	    std::cout  <<  std::negation<std::bool_constant<false>>::value  <<
       '\n';
	}

Output:
	false
	true

See also
	  conjunction	    variadic logical AND metafunction
	  (C++17)	    (class template)
	  disjunction	    variadic logical OR	metafunction
	  (C++17)	    (class template)
	  integral_constant
	  bool_constant	    compile-time constant of specified type with spec-
       ified value
	  (C++11)	    (class template)
	  (C++17)

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

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

home | help