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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::logic_error	- std::logic_error

Synopsis
	  Defined in header <stdexcept>
	  class	logic_error;

	  Defines  a  type of object to	be thrown as exception.	It reports er-
       rors that are a
	  consequence of faulty	logic within the  program  such	 as  violating
       logical
	  preconditions	or class invariants and	may be preventable.

	  No  standard	library	 components throw this exception directly, but
       the exception
	  types	std::invalid_argument, std::domain_error, std::length_error,
	  std::out_of_range, std::future_error,	and std::experimental::bad_op-
       tional_access are
	  derived from std::logic_error.

	  std-logic error-inheritance.svg

					  Inheritance diagram

Member functions
	  constructor	constructs a new logic_error  object  with  the	 given
       message
			(public	member function)
	  operator=	replaces the logic_error object
			(public	member function)

       std::logic_error::logic_error

	  logic_error( const std::string& what_arg ); (1)
	  logic_error( const char* what_arg );	      (2)
	  logic_error(	const  logic_error&  other  );	   (3) (noexcept since
       C++11)

	  1) Constructs	the exception  object  with  what_arg  as  explanatory
       string. After
	  construction,	std::strcmp(what(), what_arg.c_str()) == 0.
	  2)  Constructs  the  exception  object  with what_arg	as explanatory
       string. After
	  construction,	std::strcmp(what(), what_arg) == 0.
	  3) Copy constructor. If *this	 and  other  both  have	 dynamic  type
       std::logic_error	then
	  std::strcmp(what(),  other.what())  == 0. No exception can be	thrown
       from the	copy
	  constructor.

Parameters
	  what_arg - explanatory string
	  other	   - another exception object to copy

Exceptions
	  1,2) May throw std::bad_alloc.

Notes
	  Because copying std::logic_error is not permitted  to	 throw	excep-
       tions, this message
	  is  typically	stored internally as a separately-allocated reference-
       counted string.
	  This is also why there is no constructor  taking  std::string&&:  it
       would have to copy
	  the content anyway.

	  Before the resolution	of LWG issue 254, the non-copy constructor can
       only accept
	  std::string.	It makes dynamic allocation mandatory in order to con-
       struct a
	  std::string object.

	  After	the resolution of LWG issue 471, a derived standard  exception
       class must have
	  a publicly accessible	copy constructor. It can be implicitly defined
       as long as the
	  explanatory strings obtained by what() are the same for the original
       object and the
	  copied object.

       std::logic_error::operator=

	  logic_error& operator=( const	logic_error& other );  (noexcept since
       C++11)

	  Assigns  the	contents  with those of	other. If *this	and other both
       have dynamic type
	  std::logic_error then	std::strcmp(what(), other.what()) ==  0	 after
       assignment. No
	  exception can	be thrown from the copy	assignment operator.

Parameters
	  other	- another exception object to assign with

Return value
	  *this

Notes
	  After	 the resolution	of LWG issue 471, a derived standard exception
       class must have
	  a publicly accessible	copy assignment	operator. It can be implicitly
       defined as long
	  as the explanatory strings obtained by what()	are the	same  for  the
       original	object
	  and the copied object.

       Inherited from std::exception

Member functions
	  destructor   destroys	the exception object
	  [virtual]    (virtual	public member function of std::exception)
	  what	       returns an explanatory string
	  [virtual]    (virtual	public member function of std::exception)

	  Defect reports

	  The following	behavior-changing defect reports were applied retroac-
       tively to
	  previously published C++ standards.

	    DR	   Applied to	       Behavior	as published		  Cor-
       rect behavior
	  LWG 254 C++98	     the constructor accepting const char*   added
			     was missing
			     the explanatory strings of		     they  are
       the same	as that
	  LWG 471 C++98	     std::logic_error's			     of	the
			     copies  were implementation-defined      original
       std::logic_error
								     object

http://cppreference.com		  2024.06.10		   std::logic_error(3)

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

home | help