Espaces de noms
Variantes
Affichages
Actions

deduction guides for std::basic_string

De cppreference.com
< cpp‎ | string‎ | basic string
 
 
Bibliothèque de chaînes de caractères
Chaînes à zéro terminal
Original:
Null-terminated strings
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Les chaînes d'octets
Chaines multi-octets
Les chaînes étendues
Classes
Original:
Classes
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
basic_string
char_traits
 
std::basic_string
Les fonctions membres
Original:
Member functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
basic_string::basic_string
basic_string::operator=
basic_string::assign
basic_string::get_allocator
Elément d'accès
Original:
Element access
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
basic_string::at
basic_string::operator[]
basic_string::front (C++11)
basic_string::back (C++11)
basic_string::data
basic_string::c_str
Les itérateurs
Original:
Iterators
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
basic_string::begin
basic_string::cbegin

(C++11)
basic_string::end
basic_string::cend

(C++11)
basic_string::rbegin
basic_string::crbegin

(C++11)
basic_string::rend
basic_string::crend

(C++11)
Capacité
Original:
Capacity
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
basic_string::empty
basic_string::size
basic_string::length
basic_string::max_size
basic_string::reserve
basic_string::capacity
basic_string::shrink_to_fit (C++11)
Opérations
Original:
Operations
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
basic_string::clear
basic_string::insert
basic_string::erase
basic_string::push_back
basic_string::pop_back (C++11)
basic_string::append
basic_string::operator+=
basic_string::compare
basic_string::replace
basic_string::substr
basic_string::copy
basic_string::resize
basic_string::swap
Recherche
Original:
Search
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
basic_string::find
basic_string::rfind
basic_string::find_first_of
basic_string::find_first_not_of
basic_string::find_last_of
basic_string::find_last_not_of
Constantes
Original:
Constants
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
basic_string::npos
Tiers fonctions
Original:
Non-member functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
operator+
operator==
operator!=
operator<
operator>
operator<=
operator>=
swap(std::basic_string)
operator<<
operator>>
getline
stoi
stol
stoll
(C++11)
(C++11)
(C++11)
stoul
stoull
(C++11)
(C++11)
stof
stod
stold
(C++11)
(C++11)
(C++11)
to_string (C++11)
to_wstring (C++11)
Classes d'aide
Original:
Helper classes
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
hash<std::string>
hash<std::wstring>
hash<std::u32string>
hash<std::u16string>
(C++11)
 
Déclaré dans l'en-tête <string>
template<class InputIt, class Alloc = std::allocator<

                          typename std::iterator_traits<InputIt>::value_type>>
basic_string(InputIt, InputIt, Alloc = Alloc())
-> basic_string<typename std::iterator_traits<InputIt>::value_type,
                std::char_traits<typename std::iterator_traits<InputIt>::value_type>,

                Alloc>;
(1)
template<class CharT,

         class Traits,
         class Alloc = std::allocator<CharT>>
explicit basic_string(std::basic_string_view<CharT, Traits>, const Alloc& = Alloc())

-> basic_string<CharT, Traits, Alloc>;
(2)
template<class CharT,

         class Traits,
         class Alloc = std::allocator<CharT>>>
basic_string(std::basic_string_view<CharT, Traits>, typename /*voir ci-dessous*/::size_type,
             typename /*voir ci-dessous*/::size_type, const Alloc& = Alloc())

    -> basic_string<CharT, Traits, Alloc>;
(3)
1) Ce guide de déduction est fourni pour std::basic_string pour permettre la déduction depuis une série définie par des itérateurs. Cette surcharge participe seulement dans la résolution de surcharges si InputIt statisfait LegacyInputIterator et Alloc satisfait Allocator.
2-3) Ces guides de déductions sont fournis pour std::basic_string pour permettre la déduction depuis une std::basic_string_view. Le paramètre type size_type dans (3) fait référence au type membre size_type du type déduit par le guide de déduction. Ces surcharges participent seulement dans la résolution de surcharges si Alloc satisfait Allocator.

Note: le point jusque où la bibliothèque détermine qu'un type ne satisfait pas LegacyInputIterator n'est pas spéficié, hormis qu'au minimum les types intégrals ne sont pas qualifiés d'itérateurs d'entrée. De même, le point jusque où elle détermine qu'un type ne satisfait pas Allocator n'est pas spécifié, hormis qu'au minimum le type membre Alloc::value_type doit exister et l'expression std::declval<Alloc&>().allocate(std::size_t{}) doit être bien-formée lorsque traitée comme une opérande non-évaluée.

[modifier] Notes

Les guides (2-3) sont nécessaires puisque les constructeurs de std::basic_string pour std::basic_string_views sont des modèles pour éviter de causer des ambiguités dans le code existant, et ces modèles ne permettent pas la déduction d'argument de modèle de classe.

[modifier] Rapports de défauts

Ces rapports de défauts ayant changés le comportement du language ont été appliqués rétroactivement aux standards C++ publiés précédement.

RD Appliqué à Comportement tel que publié Comportement correct
LWG 3075 C++17 la déduction depuis basic_string_view n'était pas possible (aggravé par le problème LWG 2946) guides de déduction ajoutés

[modifier] Exemple

#include <string>
#include <vector>
int main() {
   std::vector<char> v = {'a', 'b', 'c'};
   std::basic_string s(v.begin(), v.end()); // utilise les guides de déductions
}