[windows, qt] fix windows compiler errors, remove tao + tuple polyfill
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include <mbgl/util/type_list.hpp>
|
||||
#include <mbgl/util/tuple.hpp>
|
||||
|
||||
#include <tuple>
|
||||
#include <type_traits>
|
||||
|
||||
namespace mbgl {
|
||||
@@ -24,22 +24,22 @@ template <class...> class IndexedTuple;
|
||||
// for motivation.
|
||||
//
|
||||
template <class... Is, class... Ts>
|
||||
class IndexedTuple<TypeList<Is...>, TypeList<Ts...>> : public tuple_polyfill<Ts...> {
|
||||
class IndexedTuple<TypeList<Is...>, TypeList<Ts...>> : public std::tuple<Ts...> {
|
||||
public:
|
||||
static_assert(sizeof...(Is) == sizeof...(Ts), "IndexedTuple size mismatch");
|
||||
|
||||
template <class I>
|
||||
auto& get() {
|
||||
return get_polyfill<TypeIndex<I, Is...>::value>(*this);
|
||||
return std::get<TypeIndex<I, Is...>::value, Ts...>(*this);
|
||||
}
|
||||
|
||||
template <class I>
|
||||
const auto& get() const {
|
||||
return get_polyfill<TypeIndex<I, Is...>::value>(*this);
|
||||
return std::get<TypeIndex<I, Is...>::value, Ts...>(*this);
|
||||
}
|
||||
|
||||
template <class... Us>
|
||||
IndexedTuple(Us&&... other) : tuple_polyfill<Ts...>(std::forward<Us>(other)...) {}
|
||||
IndexedTuple(Us&&... other) : std::tuple<Ts...>(std::forward<Us>(other)...) {};
|
||||
|
||||
template <class... Js, class... Us>
|
||||
IndexedTuple<TypeList<Is..., Js...>, TypeList<Ts..., Us...>>
|
||||
@@ -49,6 +49,15 @@ public:
|
||||
other.template get<Js>()...
|
||||
};
|
||||
}
|
||||
|
||||
// Help out MSVC++
|
||||
bool operator==(const IndexedTuple<TypeList<Is...>, TypeList<Ts...>>& other) const {
|
||||
return static_cast<const std::tuple<Ts...>&>(*this) == static_cast<const std::tuple<Ts...>&>(other);
|
||||
}
|
||||
|
||||
bool operator!=(const IndexedTuple<TypeList<Is...>, TypeList<Ts...>>& other) const {
|
||||
return !(*this == other);
|
||||
}
|
||||
};
|
||||
|
||||
template <class, class T>
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
// Polyfill needed by Windows because MSVC STL
|
||||
// is not compatible with our IndexedTuple code
|
||||
#if defined(_WINDOWS)
|
||||
|
||||
#include <tao/tuple/tuple.hpp>
|
||||
|
||||
#define get_polyfill tao::get
|
||||
#define tuple_polyfill tao::tuple
|
||||
|
||||
#else
|
||||
|
||||
#include <tuple>
|
||||
|
||||
#define get_polyfill std::get
|
||||
#define tuple_polyfill std::tuple
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user