Jest to n-ty pytanie o to, ale nie mogłem znaleźć dokładną kopią ...Kruszywo inicjalizacji struct, używając własnych członków danych
Załóżmy następujący kod:
#include <iostream>
struct S {
int x;
int y;
};
class C {
public:
S s;
C() : s{123, s.x} {}
};
int main() {
std::cout << C().s.y << '\n';
}
Czy można w taki sposób zainicjować s.y
? (tylko ReSharper JetBrains narzeka na to z: Object member this->s.x might not be initialized
).
Byłoby wspaniale, gdyby ktoś potwierdził swoją odpowiedź cytatem ze standardu.
The [najbliższa reguła] (http://eel.is/c++draft/special#class.cdtor-1) Wiem, że przeciwko temu nie ma tu zastosowania, ponieważ 'S' jest trywialne. Ponownie, [ta reguła] (http: // eel.to/C++ draft/dcl.init.aggr # 3) wydaje się faworyzować ciebie. – WhiZTiM
Powiązane [Czy zdefiniowano zachowanie odwołujące się do wczesnego członka z późniejszego wyrażenia członka podczas inicjowania agregacji?] (Http://stackoverflow.com/q/32940847/1708801) –