Załóżmy, że mam typ szablonu parametr T.Nowe miejsce docelowe w std :: aligned_storage?
I załóżmy mam std::aligned_storage
następująco:
typename std::aligned_storage<sizeof(T), alignof(T)>::type storage;
Chcę umieszczenia NOWE T do storage
.
Co jest wartością/typem wskaźnika zgodnego ze standardem, który należy przekazać nowemu operatorowi miejsca docelowego i jak mogę to wyprowadzić z storage
?
new (& ???) T(a,b,c);
Na przykład:
new (&storage) T(a,b,c);
new (static_cast<void*>(&storage)) T(a,b,c);
new (reinterpret_cast<T*>(&storage)) T(a,b,c);
new (static_cast<T*>(static_cast<void*>(&storage));
Które z powyższych (jeśli w ogóle) są zgodne, a jeśli brak, jaki jest lepszy sposób?
OK, +1 za czysty poziom paranoi. Jeśli kiedykolwiek rozpocznę pisanie wersji Hell ++, poproszę Cię o współpracę :-) – Angew