اشاره به آدرس یک زیرشی subobject در یک مجموعه توسط std::launder
تصور کنید که یک struct و یک union به این صورت تعریف کردید!

struct X { const int n; };
union U { X x; };


حالا فرض کنید یک شی از union U به این شکل تعریف کردید..

U u = {{ 1 }};

خوب حالا اگر بخواهید از مقدار عضو n که در struct X تعریف کردیم توسط شی u دسترسی داشته باشیم بدون اینکه آبجکت جدیدی از struct X بسازیم به روش زیر عمل میکنیم

X *p = new (&u.x) X {2};

در اینصورت حالا اشاره گری داریم که به یک عضو از union داره اشاره میکنه! پس عبارتهای زیر هم درست خواهد بود

assert(p->n == 2); // OK

حالا اگر چنین عبارتی داشته باشیم قطعا یک رفتار نامشخص خواهیم داشت در زمان اجرا...
به این علت که احتمال داره نتونیم به subObject اشاره داشته باشیم.

assert(u.x.n == 2);

حالا تو C++‎‎‎‎17 این مشکل را می توانید به راحتی با استفاده از تابع std::launder رفع کنید...

assert(*std::launder(&u.x.n) == 2); // OK