fork download
  1. #include <iostream>
  2. #include <iterator>
  3.  
  4. constexpr static int const Integer{ 42 };
  5. constexpr static int const& IntegerRef{ Integer };
  6. constexpr static int const IntArray[]{ 42, 43, 44, 45, 46 };
  7. constexpr static int const& IntArray0Ref{ IntArray[0] };
  8. constexpr static int const& IntArray1Ref{ IntArray[1] };
  9. constexpr static int const& IntArray2Ref{ IntArray[2] };
  10. constexpr static int const& IntArray3Ref{ IntArray[3] };
  11. constexpr static int const& IntArray4Ref{ IntArray[4] };
  12.  
  13. int main(int, char**) noexcept
  14. {
  15. static_assert(&Integer == &IntegerRef, "Mismatched IntegerRef");
  16. static_assert(&IntArray[0] == &IntArray0Ref, "Mismatched IntArray0Ref");
  17. static_assert(&IntArray[1] == &IntArray1Ref, "Mismatched IntArray1Ref");
  18. static_assert(&IntArray[2] == &IntArray2Ref, "Mismatched IntArray2Ref");
  19. static_assert(&IntArray[3] == &IntArray3Ref, "Mismatched IntArray3Ref");
  20. static_assert(&IntArray[4] == &IntArray4Ref, "Mismatched IntArray4Ref");
  21. std::cout
  22. << "Integer: " << &Integer << "\n"
  23. << "IntegerRef: " << &IntegerRef << "\n"
  24. << "distance: " << std::distance(reinterpret_cast<char const*>(&Integer), reinterpret_cast<char const*>(&IntegerRef)) << " bytes\n\n"
  25. << "IntArray[0]: " << &IntArray[0] << "\n"
  26. << "IntArray0Ref: " << &IntArray0Ref << "\n"
  27. << "distance: " << std::distance(reinterpret_cast<char const*>(&IntArray[0]), reinterpret_cast<char const*>(&IntArray0Ref)) << " bytes\n\n"
  28. << "IntArray[1]: " << &IntArray[1] << "\n"
  29. << "IntArray1Ref: " << &IntArray1Ref << "\n"
  30. << "distance: " << std::distance(reinterpret_cast<char const*>(&IntArray[1]), reinterpret_cast<char const*>(&IntArray1Ref)) << " bytes\n\n"
  31. << "IntArray[2]: " << &IntArray[2] << "\n"
  32. << "IntArray2Ref: " << &IntArray2Ref << "\n"
  33. << "distance: " << std::distance(reinterpret_cast<char const*>(&IntArray[2]), reinterpret_cast<char const*>(&IntArray2Ref)) << " bytes\n\n"
  34. << "IntArray[3]: " << &IntArray[3] << "\n"
  35. << "IntArray3Ref: " << &IntArray3Ref << "\n"
  36. << "distance: " << std::distance(reinterpret_cast<char const*>(&IntArray[3]), reinterpret_cast<char const*>(&IntArray3Ref)) << " bytes\n\n"
  37. << "IntArray[4]: " << &IntArray[4] << "\n"
  38. << "IntArray4Ref: " << &IntArray4Ref << "\n"
  39. << "distance: " << std::distance(reinterpret_cast<char const*>(&IntArray[4]), reinterpret_cast<char const*>(&IntArray4Ref)) << " bytes\n\n";
  40. return 0;
  41. }
  42.  
Success #stdin #stdout 0s 4400KB
stdin
Standard input is empty
stdout
Integer:      0x557964103ff4
IntegerRef:   0x557964103ff4
distance:     0 bytes

IntArray[0]:  0x557964103fe0
IntArray0Ref: 0x557964103fe0
distance:     0 bytes

IntArray[1]:  0x557964103fe4
IntArray1Ref: 0x557964103fe4
distance:     0 bytes

IntArray[2]:  0x557964103fe8
IntArray2Ref: 0x557964103fe8
distance:     0 bytes

IntArray[3]:  0x557964103fec
IntArray3Ref: 0x557964103fec
distance:     0 bytes

IntArray[4]:  0x557964103ff0
IntArray4Ref: 0x557964103ff0
distance:     0 bytes