diff --git a/src/Magnum/Trade/Test/SceneDataTest.cpp b/src/Magnum/Trade/Test/SceneDataTest.cpp index ac6ef2f8c..316d3e34d 100644 --- a/src/Magnum/Trade/Test/SceneDataTest.cpp +++ b/src/Magnum/Trade/Test/SceneDataTest.cpp @@ -950,14 +950,18 @@ void SceneDataTest::constructFieldStringNegativeStride() { /* Testing only the properties related to the stride/offset unpack */ CORRADE_COMPARE(names.fieldData().size(), 3); - CORRADE_COMPARE(names.fieldData().stride(), -sizeof(UnsignedInt)); + /* Uhh C++ WHAT THE HELL? "error C4146: unary minus operator applied to + unsigned type, result still unsigned" */ + CORRADE_COMPARE(names.fieldData().stride(), -std::ptrdiff_t(sizeof(UnsignedInt))); CORRADE_COMPARE(names.fieldData().data(), data.nameField + 2); CORRADE_COMPARE(names.stringData(), static_cast(data.nameString)); /* This is a separate code path, but should do the same */ char someArray[3*sizeof(UnsignedLong)]; CORRADE_COMPARE(names.fieldData(someArray).size(), 3); - CORRADE_COMPARE(names.fieldData(someArray).stride(), -sizeof(UnsignedInt)); + /* Uhh C++ WHAT THE HELL? "error C4146: unary minus operator applied to + unsigned type, result still unsigned" */ + CORRADE_COMPARE(names.fieldData(someArray).stride(), -std::ptrdiff_t(sizeof(UnsignedInt))); CORRADE_COMPARE(names.fieldData(someArray).data(), data.nameField + 2); CORRADE_COMPARE(names.stringData(someArray), static_cast(data.nameString)); } @@ -1161,7 +1165,9 @@ void SceneDataTest::constructFieldOffsetOnlyStringNegativeStride() { CORRADE_COMPARE(a.fieldType(), SceneFieldType::StringRangeNullTerminated16); CORRADE_COMPARE(a.fieldArraySize(), 0); CORRADE_COMPARE(a.fieldData(data).size(), 2); - CORRADE_COMPARE(a.fieldData(data).stride(), -sizeof(Data)); + /* Uhh C++ WHAT THE HELL? "error C4146: unary minus operator applied to + unsigned type, result still unsigned" */ + CORRADE_COMPARE(a.fieldData(data).stride(), -std::ptrdiff_t(sizeof(Data))); /* Order flipped compared to constructFieldOffsetOnlyString() */ auto fieldData = Containers::arrayCast(a.fieldData(data));