From fc454334ab89686a8b0ce6a6d2ccdaeb24429f0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 4 Aug 2018 18:40:12 +0200 Subject: [PATCH] Animation: more MSVC fun! --- doc/snippets/MagnumAnimation.cpp | 2 ++ src/Magnum/Animation/Test/PlayerTest.cpp | 12 ++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/doc/snippets/MagnumAnimation.cpp b/doc/snippets/MagnumAnimation.cpp index 7169d1687..729f75b6f 100644 --- a/doc/snippets/MagnumAnimation.cpp +++ b/doc/snippets/MagnumAnimation.cpp @@ -162,6 +162,7 @@ timer.advance(timeline.previousFrameTime()); } { +#ifndef CORRADE_MSVC2015_COMPATIBILITY /* Can't call + on lambdas */ /* [Player-addRawCallback] */ Animation::Track track; @@ -183,6 +184,7 @@ player.addRawCallback(track, (*static_cast*>(userData), value); }, &result, reinterpret_cast(+callback), &data); /* [Player-addRawCallback] */ +#endif } { diff --git a/src/Magnum/Animation/Test/PlayerTest.cpp b/src/Magnum/Animation/Test/PlayerTest.cpp index 9233a83a6..8dedcaa7f 100644 --- a/src/Magnum/Animation/Test/PlayerTest.cpp +++ b/src/Magnum/Animation/Test/PlayerTest.cpp @@ -759,14 +759,18 @@ void PlayerTest::addWithCallbackOnChangeTemplate() { CORRADE_COMPARE(data.called, 2); } +namespace { + /* Can't use raw lambdas because MSVC 2015 */ + void callback(std::vector& data, Int value) { + data.push_back(value); + } +} + void PlayerTest::addRawCallback() { Animation::Track track; Int result = -1; std::vector data; - auto callback = [](std::vector& data, Int value) { - data.push_back(value); - }; Animation::Player player; player.addRawCallback(track, @@ -776,7 +780,7 @@ void PlayerTest::addRawCallback() { if(value == *static_cast(destination)) return; *static_cast(destination) = value; reinterpret_cast&, Int)>(callback)(*static_cast*>(userData), value); - }, &result, reinterpret_cast(+callback), &data) + }, &result, reinterpret_cast(callback), &data) .play({}); /* Should add the default-constructed value into the vector, but only once */