diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2017-11-29 15:54:40 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2017-11-29 17:31:33 +0100 |
commit | 8757164ac8f2b033b2b12d4baf075ed18cfeb2b4 (patch) | |
tree | 788aa097c9b079b2c0203be41ece33a49b0a753b /include | |
parent | 2eec5a19803a01e21d5793706ae69ac0d886cee5 (diff) | |
download | qtlocation-mapboxgl-8757164ac8f2b033b2b12d4baf075ed18cfeb2b4.tar.gz |
[build] standardize on -fvisibility=hidden for all targets
Enables -fvisibility=hidden for iOS and Linux, and adds a workaround for GCC 6.3-7.1
Adds a GCC 6 build
Enables diagnostics for C files
Fixes a shadow warning in parsedate.c
Diffstat (limited to 'include')
-rw-r--r-- | include/mbgl/style/conversion.hpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/include/mbgl/style/conversion.hpp b/include/mbgl/style/conversion.hpp index 0b7e0b2b2f..71c2cec237 100644 --- a/include/mbgl/style/conversion.hpp +++ b/include/mbgl/style/conversion.hpp @@ -222,6 +222,15 @@ private: optional<GeoJSON> (*toGeoJSON) (const Storage&, Error&); }; + // Extracted this function from the table below to work around a GCC bug with differing + // visibility settings for capturing lambdas: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80947 + template <typename T> + static auto vtableEachMember(const Storage& s, const std::function<optional<Error>(const std::string&, const Convertible&)>& fn) { + return ConversionTraits<T>::eachMember(reinterpret_cast<const T&>(s), [&](const std::string& k, T&& v) { + return fn(k, Convertible(std::move(v))); + }); + } + template <typename T> static VTable* vtableForType() { using Traits = ConversionTraits<T>; @@ -257,11 +266,7 @@ private: return optional<Convertible>(); } }, - [] (const Storage& s, const std::function<optional<Error> (const std::string&, const Convertible&)>& fn) { - return Traits::eachMember(reinterpret_cast<const T&>(s), [&](const std::string& k, T&& v) { - return fn(k, Convertible(std::move(v))); - }); - }, + vtableEachMember<T>, [] (const Storage& s) { return Traits::toBool(reinterpret_cast<const T&>(s)); }, |