fork download
  1. #include <iostream>
  2. #include <cstddef>
  3. using namespace std;
  4.  
  5. struct Containing {
  6. int x;
  7. struct {
  8. Containing * get_containing () {
  9. return reinterpret_cast<Containing *> (
  10. this - offsetof (Containing, inner)
  11. );
  12. }
  13. int y;
  14. } inner;
  15. };
  16.  
  17.  
  18. int main () {
  19. Containing c;
  20. std::cout
  21. << (c.inner.get_containing () == &c ? "success" : "fail")
  22. << std::endl;
  23. }
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
fail