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

NAME
     std::has_facet - std::has_facet

Synopsis
	Defined in header <locale>
	template< class Facet > 		       (until C++11)
	bool has_facet( const locale& loc ) throw();
	template< class Facet > 		       (since C++11)
	bool has_facet( const locale& loc ) noexcept;

	Checks if the locale loc implements the facet Facet.

	The  program  is ill-formed if Facet is not a facet or it is a volatile-
     qualified
	facet.

Parameters
	loc - the locale object to query

Return value
	Returns true if the facet Facet was installed in the locale  loc,  false
     otherwise.

Notes
	std::has_facet	must  return true for all locales loc if Facet is one of
     the standard
	facets given here.

Example
     // Run this code

      #include <iostream>
      #include <locale>

      // minimal custom facet
      struct myfacet : public std::locale::facet
      {
	  static std::locale::id id;
      };

      std::locale::id myfacet::id;

      int main()
      {
	  // loc is a "C" locale with myfacet added
	  std::locale loc(std::locale::classic(), new myfacet);
	  std::cout << std::boolalpha
		    << "Can loc classify chars? "
		    << std::has_facet<std::ctype<char>>(loc) << '\n'
		    << "Can loc classify char32_t? "
		    << std::has_facet<std::ctype<char32_t>>(loc) << '\n'
		    << "Does loc implement myfacet? "
		    << std::has_facet<myfacet>(loc) << '\n';
      }

Output:
      Can loc classify chars? true
      Can loc classify char32_t? false
      Does loc implement myfacet? true

	Defect reports

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

	  DR	Applied to    Behavior as published		  Correct behav-
     ior
	LWG  436  C++98      it was unclear whether Facet it can be const-quali-
     fied, but not
			   can be cv-qualified		volatile-qualified

See also
	locale	  set of polymorphic facets that  encapsulate  cultural  differ-
     ences
		  (class)
	use_facet obtains a facet from a locale
		  (function template)

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

home | help