mirror of
https://github.com/bolero-MURAKAMI/Sprout
synced 2024-11-12 21:09:01 +00:00
fix swallow
This commit is contained in:
parent
10e239f933
commit
91b37d8f7f
2 changed files with 41 additions and 3 deletions
|
@ -297,7 +297,7 @@ namespace sprout {
|
||||||
SPROUT_CXX14_CONSTEXPR void
|
SPROUT_CXX14_CONSTEXPR void
|
||||||
assign_impl(Tuple&& t, sprout::index_tuple<Indexes...>) {
|
assign_impl(Tuple&& t, sprout::index_tuple<Indexes...>) {
|
||||||
typedef typename std::decay<Tuple>::type type;
|
typedef typename std::decay<Tuple>::type type;
|
||||||
sprout::swallow({(base_type::template get<Indexes>(*this) = sprout::move(type::template get<Indexes>(SPROUT_FORWARD(Tuple, t))), 0)...});
|
sprout::swallow({((base_type::template get<Indexes>(*this) = sprout::move(type::template get<Indexes>(SPROUT_FORWARD(Tuple, t)))), 0)...});
|
||||||
}
|
}
|
||||||
template<sprout::index_t... Indexes>
|
template<sprout::index_t... Indexes>
|
||||||
SPROUT_CONSTEXPR std::tuple<Types...>
|
SPROUT_CONSTEXPR std::tuple<Types...>
|
||||||
|
|
|
@ -13,11 +13,49 @@
|
||||||
|
|
||||||
namespace sprout {
|
namespace sprout {
|
||||||
//
|
//
|
||||||
|
// swallow_t
|
||||||
// swallow
|
// swallow
|
||||||
//
|
//
|
||||||
|
// example:
|
||||||
|
// swallow({(void)pack, 0}...);
|
||||||
|
// ((void)pack, ..., swallow); // right fold, since C++17
|
||||||
|
// (swallow, ..., (void)pack); // left fold, since C++17
|
||||||
|
//
|
||||||
|
struct swallow_t {
|
||||||
|
public:
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline SPROUT_CXX14_CONSTEXPR void
|
inline SPROUT_CXX14_CONSTEXPR void
|
||||||
swallow(std::initializer_list<T>) SPROUT_NOEXCEPT {}
|
operator()(std::initializer_list<T>) const SPROUT_NOEXCEPT {}
|
||||||
|
};
|
||||||
|
namespace {
|
||||||
|
SPROUT_STATIC_CONSTEXPR sprout::swallow_t swallow = {};
|
||||||
|
} // anonymous-namespace
|
||||||
|
template<typename T>
|
||||||
|
inline SPROUT_CONSTEXPR sprout::swallow_t
|
||||||
|
operator,(sprout::swallow_t, T&&) SPROUT_NOEXCEPT {
|
||||||
|
return sprout::swallow;
|
||||||
|
}
|
||||||
|
template<typename T>
|
||||||
|
inline SPROUT_CONSTEXPR sprout::swallow_t
|
||||||
|
operator,(T&&, sprout::swallow_t) SPROUT_NOEXCEPT {
|
||||||
|
return sprout::swallow;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// unused_t
|
||||||
|
// unused
|
||||||
|
//
|
||||||
|
struct unused_t {
|
||||||
|
public:
|
||||||
|
template<typename... Args>
|
||||||
|
SPROUT_CONSTEXPR sprout::unused_t const&
|
||||||
|
operator()(Args&&...) const SPROUT_NOEXCEPT {
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
namespace {
|
||||||
|
SPROUT_STATIC_CONSTEXPR sprout::unused_t unused = {};
|
||||||
|
} // anonymous-namespace
|
||||||
} // namespace sprout
|
} // namespace sprout
|
||||||
|
|
||||||
#endif // #ifndef SPROUT_UTILITY_SWALLOW_HPP
|
#endif // #ifndef SPROUT_UTILITY_SWALLOW_HPP
|
||||||
|
|
Loading…
Reference in a new issue