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

FreeBSD Manual Pages

  
 
  

home | help
deductiongu...basic_string(3) C++ Standard Libarydeductiongu...basic_string(3)

NAME
       deductionguidesforstd::basic_string     -    deductionguidesforstd::ba-
       sic_string

Synopsis
	  Defined in header <string>
	  template< class InputIt, class Alloc = std::allocator<

	  typename std::iterator_traits<InputIt>::value_type> >
	  basic_string(	InputIt, InputIt, Alloc	= Alloc() )
	  ->						 basic_string<typename
       (1) (since C++17)
	  std::iterator_traits<InputIt>::value_type,
	  std::char_traits<typename
	  std::iterator_traits<InputIt>::value_type>,

	  Alloc>;
	  template< class CharT,

	  class	Traits,
	  class		Alloc	      =		std::allocator<CharT>	     >
       (2) (since C++17)
	  explicit basic_string( std::basic_string_view<CharT, Traits>,
	  const	Alloc& = Alloc() )

	  -> basic_string<CharT, Traits, Alloc>;
	  template< class CharT,

	  class	Traits,
	  class	Alloc =	std::allocator<CharT>> >
	  basic_string(	  std::basic_string_view<CharT,	  Traits>,    typename
       (3) (since C++17)
	  /*see	below*/::size_type,
	  typename /*see below*/::size_type, const Alloc& = Alloc() )

	  -> basic_string<CharT, Traits, Alloc>;

	  1)  This  deduction guide is provided	for std::basic_string to allow
       deduction from an
	  iterator range. This overload	participates  in  overload  resolution
       only if InputIt
	  satisfies LegacyInputIterator	and Alloc satisfies Allocator.
	  2-3)	These  deduction  guides are provided for std::basic_string to
       allow deduction
	  from a std::basic_string_view. The size_type parameter type  in  (3)
       refers to the
	  size_type  member  type  of the type deduced by the deduction	guide.
       These overloads
	  participate in overload resolution only if Alloc  satisfies  Alloca-
       tor.

	  Note:	 the  extent  to which the library determines that a type does
       not satisfy
	  LegacyInputIterator is unspecified, except that as a	minimum	 inte-
       gral types do not
	  qualify  as input iterators. Likewise, the extent to which it	deter-
       mines that a type
	  does not satisfy Allocator is	unspecified, except that as a  minimum
       the member type
	  Alloc::value_type must exist and the expression
	  std::declval<Alloc&>().allocate(std::size_t{})  must	be well-formed
       when treated as
	  an unevaluated operand.

Notes
	  Guides (2-3) are needed because the  std::basic_string  constructors
       for
	  std::basic_string_views are made templates to	avoid causing ambigui-
       ties in existing
	  code,	and those templates do not support class template argument de-
       duction.

Example
       // Run this code

	#include <string>
	#include <vector>
	int main() {
	   std::vector<char> v = {'a', 'b', 'c'};
	   std::basic_string s(v.begin(), v.end()); // uses explicit deduction
       guide
	}

	 Defect	reports

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

	     DR	      Applied	 to		   Behavior    as    published
       Correct behavior
	  LWG	3075   C++17	    deduction	from   basic_string_view   was
       deduction guides
			      unsupported  (exacerbated	 by  LWG  issue	 2946)
       added

http://cppreference.com		  2022.07.31	 deductiongu...basic_string(3)

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

home | help