Init
This commit is contained in:
98
cppdraft/locale/facet.md
Normal file
98
cppdraft/locale/facet.md
Normal file
@@ -0,0 +1,98 @@
|
||||
[locale.facet]
|
||||
|
||||
# 28 Text processing library [[text]](./#text)
|
||||
|
||||
## 28.3 Localization library [[localization]](localization#locale.facet)
|
||||
|
||||
### 28.3.3 Locales [[locales]](locales#locale.facet)
|
||||
|
||||
#### 28.3.3.1 Class locale [[locale]](locale#facet)
|
||||
|
||||
#### 28.3.3.1.2 Types [[locale.types]](locale.types#locale.facet)
|
||||
|
||||
#### 28.3.3.1.2.2 Class locale::facet [locale.facet]
|
||||
|
||||
[ð](#lib:locale,facet)
|
||||
|
||||
namespace std {class locale::facet {protected:explicit facet(size_t refs = 0); virtual ~facet();
|
||||
facet(const facet&) = delete; void operator=(const facet&) = delete; };}
|
||||
|
||||
[1](#1)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/text.tex#L766)
|
||||
|
||||
Class facet is the base class for locale feature sets[.](#1.sentence-1)
|
||||
|
||||
A class is a [*facet*](#def:facet "28.3.3.1.2.2 Class locale::facet [locale.facet]") if it is publicly derived from another facet, or
|
||||
if it is a class derived from locale::facet and
|
||||
contains a publicly accessible declaration as follows:[215](#footnote-215 "This is a complete list of requirements; there are no other requirements. Thus, a facet class need not have a public copy constructor, assignment, default constructor, destructor, etc.")static ::std::locale::id id;
|
||||
|
||||
[2](#2)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/text.tex#L781)
|
||||
|
||||
Template parameters in this Clause
|
||||
which are required to be facets
|
||||
are those named Facet in declarations[.](#2.sentence-1)
|
||||
|
||||
A program that passes
|
||||
a type that is *not* a facet, or
|
||||
a type that refers to a volatile-qualified facet,
|
||||
as an (explicit or deduced) template parameter to
|
||||
a locale function expecting a facet,
|
||||
is ill-formed[.](#2.sentence-2)
|
||||
|
||||
A const-qualified facet is a valid template argument to
|
||||
any locale function that expects a Facet template parameter[.](#2.sentence-3)
|
||||
|
||||
[3](#3)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/text.tex#L794)
|
||||
|
||||
The refs argument to the constructor is used for lifetime management[.](#3.sentence-1)
|
||||
|
||||
For refs == 0,
|
||||
the implementation performs delete static_cast<locale::facet*>(f) (where f is a pointer to the facet)
|
||||
when the last locale object containing the facet is destroyed;
|
||||
for refs == 1, the implementation never destroys the facet[.](#3.sentence-2)
|
||||
|
||||
[4](#4)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/text.tex#L802)
|
||||
|
||||
Constructors of all facets defined in this Clause
|
||||
take such an argument and pass it along to
|
||||
their facet base class constructor[.](#4.sentence-1)
|
||||
|
||||
All one-argument constructors defined in this Clause are explicit,
|
||||
preventing their participation in implicit conversions[.](#4.sentence-2)
|
||||
|
||||
[5](#5)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/text.tex#L809)
|
||||
|
||||
For some standard facets a standard â…_bynameâ class,
|
||||
derived from it, implements the virtual function semantics
|
||||
equivalent to that facet of the locale
|
||||
constructed by locale(const char*) with the same name[.](#5.sentence-1)
|
||||
|
||||
Each such facet provides a constructor that takes
|
||||
a const char* argument, which names the locale, and
|
||||
a refs argument, which is passed to the base class constructor[.](#5.sentence-2)
|
||||
|
||||
Each such facet also provides a constructor that takes
|
||||
a string argument str and
|
||||
a refs argument,
|
||||
which has the same effect as calling the first constructor
|
||||
with the two arguments str.c_str() and refs[.](#5.sentence-3)
|
||||
|
||||
If there is no â…_bynameâ version of a facet,
|
||||
the base class implements named locale semantics itself
|
||||
by reference to other facets[.](#5.sentence-4)
|
||||
|
||||
[215)](#footnote-215)[215)](#footnoteref-215)
|
||||
|
||||
This is a complete list of requirements; there are no other requirements[.](#footnote-215.sentence-1)
|
||||
|
||||
Thus, a facet class need not have a public
|
||||
copy constructor, assignment, default constructor, destructor, etc[.](#footnote-215.sentence-2)
|
||||
Reference in New Issue
Block a user