Utilizzando una versione leggermente modificata di Howard Hinnants's C++11 stack allocator che è documented here e here, con std::basic_string
e compilazione con gcc
che sta usando libstdc++
, il seguente esempio (see it live):Il C++ 11 richiede che gli allocatori siano costruttibili di default, libstdC++ e libC++ non sono d'accordo?
const unsigned int N = 200;
arena<N> a;
short_alloc<char, N> ac(a) ;
std::basic_string<char,std::char_traits<char>,short_alloc<char, N>> empty(ac);
pronunciato la seguente errore (tra gli altri):
error: no matching function for call to 'short_alloc<char, 200ul>::short_alloc()'
if (__n == 0 && __a == _Alloc())
^
Tuttavia, funziona senza errori durante la compilazione con clang
e utilizzando libc++
(see it live).
L'implementazione stdlibc++
di std::basic_string
prevede che l'allocatore abbia un costruttore predefinito.
Il C++ 11 richiede che gli allocatori siano costruttibili di default? Quale implementazione è corretta?
domande Self-risposta ottieni automaticamente un downvote. Ho una buona idea di chi sia, ma nessuna prova. In ogni caso, hanno bisogno di risucchiarlo perché la politica sulle domande auto-risposte (è _ esplicitamente incoraggiata_, e ci sono anche le opzioni della GUI !!) è stata collegata a loro molte volte ma non sembrano accettarle. –