2012-11-15 15 views
9

Podczas pisania this answer zdałem sobie sprawę, że nie jestem tak pewny co do swoich wniosków, co zwykle zapewniam przed uderzeniem Poinformuj swoją odpowiedź.Czy zmienne elementy danych są trywialnie kopiowane?

mogę znaleźć kilka rozsądnie przekonujących cytatów do argumentu, że trywialne-copyability z volatile członków danych jest albo implementacja zdefiniowane lub płasko-out niedozwolone: ​​

Ale nie byłem w stanie poprzeć tego w standardzie sam. Szczególnie "niepokojące" jest to, że nie ma oznak proponowanej zmiany brzmienia z tej listy zagadnień n3159 w ostatecznym brzmieniu aktualnego standardu.

Co daje? Czy elementy danych są trywialnie kopiowane, czy nie?


  C++ 11

+0

Właśnie zauważyłem, że proponowana zmiana brzmienia w numerze # 496 ma zaledwie miesiąc lub tyle lat i jako taka ma miejsce po C++ 11. Dlatego jest nadal aktywny. Domyślam się, że zadaję to samo pytanie, co Maddock rozpoczął w 2004 roku od numeru 496. –

Odpowiedz

1

widzę następującą definicję dla "trywialnie copyable" (C++ 11 §3.9 pkt 9):

... Typy skalarów, trywialnie kopiowane typy klas, tablice takich typów, i cv-kwalifikowane wersje tych typów są zbiorczo nazywane trywialnie copyable typy ....

cv wykwalifikowany z definicji obejmuje consti/lubvolatile (§3.9.3). Wydaje się zatem, że wartości, które można jawnie skopiować, można wyraźnie ograniczyć, jeżeli niewykwalifikowany typ byłby trywialnie kopiowalny (skalarny lub trywialnie kopiowalny typ klasy lub jej tablica).

+0

Ale spójrz na numer 496, który sugeruje, że to sformułowanie jest niedokładne i prawdopodobnie niezgodne ze sformułowaniem w innym miejscu. Fragment, który cytujesz, jest tutaj wyraźnie zaznaczony. –

+0

@LightnessRacesinOrbit: 'lotny' w C++ jest raczej inny niż na przykład w Javie. Nie widziałem, gdzie to wskazuje na atomowość w C++, a zatem założyć, że nie. To jedyna interpretacja, którą mogę wymyślić, jest zgodna z resztą standardu. – cHao

+0

Z wyjątkiem członków komitetu najwyraźniej nie zgadzam się, czyniąc to niejednoznacznym. Stąd moje pytanie :(Problem polega na tym, że chociaż norma nie gwarantuje atomowości dla obiektów 'lotnych', to jest to prawdopodobnie dość ogólnikowe, jeśli chodzi o _na_ właściwość' lotnych' obiektów, co oznacza implikację realizacji dla większości z nich. to tam przybył Maddock. Właściwie to w tej chwili jestem w połowie wyczekiwany na DR. –

Powiązane problemy