提交 9b097859 编写于 作者: M Megvii Engine Team

chore(core): remove index_sequence polyfill for pre-C++14

GitOrigin-RevId: 8010000bc2c84bb3a84f3cb1cc7433db798c2a53
上级 074645d8
......@@ -21,30 +21,11 @@
namespace mgb {
//! like std::index_sequence in C++14
template <size_t... Idx>
class index_sequence {
public:
static constexpr size_t size() { return sizeof...(Idx); }
};
namespace metahelper_detail {
[[noreturn]] void on_maybe_invalid_val_access();
template <typename Idxseq, size_t End>
struct make_index_sequence_impl;
template <size_t... Idx, size_t End>
struct make_index_sequence_impl<index_sequence<Idx...>, End> {
using type = typename make_index_sequence_impl<
index_sequence<End-1, Idx...>, End-1>::type;
};
template <size_t... Idx>
struct make_index_sequence_impl<index_sequence<Idx...>, 0> {
using type = index_sequence<Idx...>;
};
template <class T, class Tuple, size_t... I>
constexpr T make_from_tuple_impl(Tuple&& t, index_sequence<I...>) {
constexpr T make_from_tuple_impl(Tuple&& t, std::index_sequence<I...>) {
return T(std::get<I>(std::forward<Tuple>(t))...);
}
......@@ -108,18 +89,13 @@ namespace metahelper_detail {
}
} // namespace metahelper_detail
//! construct index_sequence<0..N-1>
template <size_t N>
using make_index_sequence =
typename metahelper_detail::make_index_sequence_impl<index_sequence<>, N>::type;
//! construct object T from tuple of arguments
template <class T, class Tuple>
constexpr T make_from_tuple(Tuple&& t) {
constexpr std::size_t size =
std::tuple_size<std::decay_t<Tuple>>::value;
return metahelper_detail::make_from_tuple_impl<T>(
std::forward<Tuple>(t), make_index_sequence<size>{});
std::forward<Tuple>(t), std::make_index_sequence<size>{});
}
/*!
......
......@@ -466,8 +466,8 @@ namespace thin_hash_table {
const std::tuple<Kargs...> &k,
const std::tuple<Vargs...> &v) {
return do_emplace_picewise(k, v,
make_index_sequence<sizeof...(Kargs)>{},
make_index_sequence<sizeof...(Vargs)>{});
std::make_index_sequence<sizeof...(Kargs)>{},
std::make_index_sequence<sizeof...(Vargs)>{});
}
template<typename U, typename V>
......@@ -539,7 +539,8 @@ namespace thin_hash_table {
std::pair<iterator, bool> do_emplace_picewise(
const std::tuple<Kargs...> &kargs,
const std::tuple<Vargs...> &vargs,
index_sequence<Kidx...>, index_sequence<Vidx...>) {
std::index_sequence<Kidx...>,
std::index_sequence<Vidx...>) {
Key key(std::forward<Kargs>(std::get<Kidx>(kargs))...);
auto ret = m_impl.insert(make_impl_key(key));
if (ret.second) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册