int value = 12;
должно иметь характеристику времени компиляции. В ином случае контекстом вызова scale
в выражении scale(value)
будет контекст времени исполнения, а не контекст времени компиляции. И кто решил что это именно сбой?
Какая то проблема именно в написании -> int(*)[10]
Публикация вопросов, компетентно ответить на которые могут только представители конкретной организации, неизбежно приводит к провокации нарушений п. 3.4, 5.14 - 5.17 правил данного Сервиса.
У меня есть метод
должен возвращать текст из файла построчно
return 0;
break;
return res;
MyString::Copy
передан ноль. Где именно произойдет падение и почему?m_string[m_length] = '\0';
или m_string
можно как-то иначе инициализировать чтобы не писать эту строчку?MyString::Copy
ты практикуешь ранний выход, но не нарушает ли это инвариант типа?MyString::Copy
из *this
не создавалась временная строка, деструктор которой ты и наблюдаешь? new
, нужно читать именно стандарт, а не документацию майков.new
не убивает процесс. Рядовая форма, используемая в этом коде, именно что бросит исключение, ловить которое будет некому. Ситуацию в сторону возвращается ноль исправляет аргумент std::nothrow
для самого new
. if (m_string == nullptr)
return *this;
Можно попробовать сделать функцию которая возвращает пару.
swap
означает именно фактический размен состояний между аргументами.swap
, использующая третий объект. clear(quad_mesh);
и glDeleteProgram(quad_shader);
из области видимости первого окна?while(!glfwWindowShouldClose(win_0.id))
явно говорят о том, что к моменту начала области видимости второго окна ни от меша, ни от шейдера следа у же не останется.
При этом учитывать стоит то, что GCC действительно позволяет VLA в C++, что нарушает стандарт. Поэтому в GCC у тебя просто не будет этой ошибки.