Korzystanie z nieco zmodyfikowaną wersję Howard Hinnants's C++11 stack allocator która documented here i here z std::basic_string
i zestawiania ze gcc
który korzysta libstdc++
, następujący przykład (see it live):Czy C++ 11 wymaga, aby alokatory były domyślnie skonstruowane, libstdC++ i libC++ nie zgadzały?
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);
daje następujący błąd (m.in.):
error: no matching function for call to 'short_alloc<char, 200ul>::short_alloc()'
if (__n == 0 && __a == _Alloc())
^
Jednak działa bez błędu podczas kompilowania przy użyciu clang
i używania libc++
().
Implementacja stdlibc++
implementacji std::basic_string
oczekuje, że przydzielający ma domyślny konstruktor.
Czy C++ 11 wymaga, aby podzielniki były domyślnie możliwe do skonstruowania? Która implementacja jest poprawna?
pytania Samojezdne odpowiedział automatycznie otrzymasz zniżkę. Mam dobry pomysł, kto to jest, ale nie ma dowodów. Tak czy inaczej, muszą to wysysać, ponieważ polityka dotycząca pytań, na które można odpowiedzieć (jest nieodmiennie zachęcana) i są nawet dostępne opcje GUI !!) była z nimi powiązana wiele razy, ale nie mogą tego zaakceptować. –