образом подставляются поля из одной структуры во вторую?
путём копирования данных, должно быть...
A& a = *(A*)returnData(b); Это невалидный код, UB
https://github.com/simple-coding-channel/SimpleEngine/blob/e55968fb5dde12e7d1508857eae9896486cfa4fc/SimpleEngineCore/src/SimpleEngineCore/Window.cpp#L59 https://github.com/simple-coding-channel/SimpleEngine/blob/e55968fb5dde12e7d1508857eae9896486cfa4fc/SimpleEngineCore/src/SimpleEngineCore/Window.hpp#L35
Нарушение strict aliasing, типы A и B никак не соотносятся друг с другом.
А это к чему ? я не понял...
Я просто примером предоставил то место, где увидел это собственно
Места, где получается нарушается strict aliasing?
Я не могу утверждать однозначно, нарушается ли там strict aliasing
Потом, там static_cast, он должен не допускать такое нарушение
Как я понял, у нас есть две функции в API : void* glfwSetUserWindowPointer(GLFWwindow* window, void* pointer) void* glfwGetWindowUserPointer(GLFWwindow* window) В первой функции она принимает вторым типом кастомный указатель юзера этого апи, внутри сохраняя на него указатель. Получается, что strict aliasing нет и можно просто передавать ссылку на свою структуру и сохранять в нём значения окна?
А зачем так сложно то ? struct a{int aa;int aaa;}; struct b{int bb;int bbb;}; int main(void) { a x = {11,12}; b &y = reinterpret_cast<b&>(x) ; std::cout<<y.bb<<" "<<y.bbb<<"\n"; }
Я эту функцию не нашёл
https://www.glfw.org/docs/3.0/group__window.html#ga17807ce0f45ac3f8bb50d6dcc59a4e06
Обсуждают сегодня