Ciągle szukam, ale wygląda na to, że nie ma żadnego oprocentowania od deweloperów kompilatorów.Czy jakikolwiek główny kompilator prawdopodobnie będzie obsługiwać nieograniczone związki C++ 0x w najbliższej przyszłości?
Dla mnie wydaje się to dziwne - zasadniczo obecne C++ ma ograniczenia dotyczące związków, które zawsze były irytujące i nigdy nie były odpowiednie. Można by pomyśleć, że zasadniczo usunięcie kilku sprawdzeń błędów byłoby stosunkowo prostym sposobem na zaznaczenie dodatkowego pola pomocy C++ 0x, ale AFAICT nie zrobił tego żaden twórca kompilatora.
Dlaczego jestem zainteresowany tym, że zapewnia on proste rozwiązanie powtarzającego się problemu w kodowaniu struktury danych - jak zarezerwować pamięć dla instancji jakiegoś nieznanego (typu szablonu), najlepiej z jak największym bezpieczeństwem typu w okoliczności, ale bez wywoływania jakiegokolwiek konstruktora, który został zdefiniowany na tym typie. Naprawdę ważne jest to, że należy przestrzegać zasad dostosowania.
Nieograniczony związek jest idealny do tego - daje typ, który nie ma konstruktorów ani destruktorów, ale który ma odpowiedni rozmiar i wyrównanie, aby pozwolić każdemu członkowi. Istnieją oczywiście sposoby jawnego konstruowania i niszczenia w razie potrzeby, a gdy potrzebujesz dostępu do typów, po prostu użyj odpowiedniego członka związku, aby uzyskać do niego dostęp. Wsparcie dla „właściwej” związki mogą być przydatne także, ale można dostać ogromne korzyści nawet dla unii pojedynczej członkowskich, takich jak ...
union Memory_For_Item_t
{
Item_t m_Item;
};
Nawet przy standardowych funkcji obsługi wyrównanie w C++ 0x, to podejście wygrywa dla wygody i bezpieczeństwa, gdy np potrzebujesz miejsca na x elementów w węźle, z których nie wszystkie będą w użyciu (lub zbudowane) w dowolnym momencie. Bez C++ 0x, nadal jesteśmy w mrocznych czasach problemów z wyrównaniem WRT - każdy kompilator robi to w swój niestandardowy sposób.
Jedyny problem z nieograniczonymi związkami zawodowymi - nie ma dla nich pomocy, którą mogę znaleźć.
Tak, teraz mam podejście szablonowe, ale polega ono na warunkach preprocesora w celu zidentyfikowania kompilatorów i innych złośliwości, głównie w celu prawidłowego traktowania wyrównania. IOW jest kruchy i ogólnie nieprzyjemny, a im wcześniej go zastąpię, tym lepiej. – Steve314
Hmmm - interesujący stół, ale tylko z trzema zupełnie pustymi wierszami, jeden musi być dla funkcji, której najbardziej nie mogę się doczekać. No cóż - przypuszczam, że wyrazy i zamknięcia Lamdy będą miłe. – Steve314