В моем физически основанном рендерере, я получаю ошибку повреждения памяти (программа вылетает, а отладчик дает фиктивный стек стека, который бесполезен). Я проследил это до SSCCE. Кажется, что строка с конструктором вызывает ошибку:
#include <cstdint>
class Foo final {
public:
uint8_t packed;
public:
inline Foo(void) : packed(0xFF) {} //causes error
inline ~Foo(void) = default;
};
static_assert(sizeof(Foo)==sizeof(uint8_t),"Implementation error!");
int main(int /*argc*/, char* /*argv*/[]) {
Foo* arr = new Foo[4]; //Tried a bunch of different sizes. All fail.
delete [] arr;
return 0;
}
Проблема не возникает для MSVC или GCC, только компилятор Intel (версия которого составляет 16,0). Но, поскольку это ошибка памяти, это ничего не значит. Прежде чем я отправлю отчет об ошибке, может ли кто-нибудь подтвердить это, не я неправильно использую С++?
Здесь - это готовое решение, демонстрирующее проблему. Здесь - сборка.