Man Page use_facet.3



                       Standard C++ Library
             Copyright 1998, Rogue Wave Software, Inc.



NAME

     use_facet

      - A template function used to obtain a facet.





SYNOPSIS

     #include <locale>
     template  <class   Facet>   const   Facet&   use_facet(const
     locale&);





DESCRIPTION

     use_facet returns a reference  to  the  corresponding  facet
     contained in the locale argument. You specify the facet type
     by explicitly including  the  template  parameter  (see  the
     example below). If that facet is not present, then use_facet
     throws runtime_error. Otherwise, the reference remains valid
     for as long as any copy of   the locale exists.

     Note that if your compiler  cannot  overload  function  tem-
     plates  on  return  type,  then you need to use an alternate
     use_facet template. The alternate template  takes  an  addi-
     tional  argument  that is a pointer to the type of facet you
     want to extract from the locale. The declaration looks  like
     this:


     template <class Facet>
     const Facet& use_facet(const locale&, Facet*);

     The example below  shows  the  use  of  both  variations  of
     use_facet.





EXAMPLE

     //
     // usefacet.cpp
     //
     #include <iostream>

     int main ()
     {
      using namespace std;

      locale loc;

       // Get a ctype facet
      const ctype<char>& ct =
     #ifndef _RWSTD_NO_TEMPLATE_ON_RETURN_TYPE
         use_facet<ctype<char> >(loc);
     #else
         use_facet(loc,(ctype<char>*)0);
     #endif

      cout << 'a' << ct.toupper('c') << endl;

      return 0;
     }





SEE ALSO

     locale, facets, has_facet