mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2025-07-04 14:14:09 +00:00
add array constexpr member-functions fill, assign
This commit is contained in:
parent
d76d714816
commit
a660478548
10 changed files with 110 additions and 70 deletions
59
sprout/variant/tuple.hpp
Normal file
59
sprout/variant/tuple.hpp
Normal file
|
@ -0,0 +1,59 @@
|
|||
#ifndef SPROUT_VARIANT_TUPLE_HPP
|
||||
#define SPROUT_VARIANT_TUPLE_HPP
|
||||
|
||||
#include <cstddef>
|
||||
#include <tuple>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/variant/variant.hpp>
|
||||
#include <sprout/utility/move.hpp>
|
||||
#include <sprout/tuple/tuple/get.hpp>
|
||||
|
||||
namespace sprout_adl {
|
||||
//
|
||||
// tuple_get
|
||||
//
|
||||
template<std::size_t I, typename... Types>
|
||||
inline SPROUT_CONSTEXPR typename sprout::tuples::tuple_element<
|
||||
I,
|
||||
sprout::variant<Types...>
|
||||
>::type const&
|
||||
tuple_get(sprout::variant<Types...> const& t) {
|
||||
return t.template get_at<I>();
|
||||
}
|
||||
template<std::size_t I, typename... Types>
|
||||
inline SPROUT_CONSTEXPR typename sprout::tuples::tuple_element<
|
||||
I,
|
||||
sprout::variant<Types...>
|
||||
>::type&
|
||||
tuple_get(sprout::variant<Types...>& t) {
|
||||
return t.template get_at<I>();
|
||||
}
|
||||
template<std::size_t I, typename... Types>
|
||||
inline SPROUT_CONSTEXPR typename sprout::tuples::tuple_element<
|
||||
I,
|
||||
sprout::variant<Types...>
|
||||
>::type&&
|
||||
tuple_get(sprout::variant<Types...>&& t) {
|
||||
return sprout::move(sprout::tuples::get<I>(t));
|
||||
}
|
||||
} // namespace sprout_adl
|
||||
|
||||
namespace std {
|
||||
//
|
||||
// tuple_size
|
||||
//
|
||||
template<typename... Types>
|
||||
struct tuple_size<sprout::variant<Types...> >
|
||||
: public std::tuple_size<typename sprout::variant<Types...>::tuple_type>
|
||||
{};
|
||||
|
||||
//
|
||||
// tuple_element
|
||||
//
|
||||
template<std::size_t I, typename... Types>
|
||||
struct tuple_element<I, sprout::variant<Types...> >
|
||||
: public std::tuple_element<I, typename sprout::variant<Types...>::tuple_type>
|
||||
{};
|
||||
} // namespace std
|
||||
|
||||
#endif // #ifndef SPROUT_VARIANT_TUPLE_HPP
|
Loading…
Add table
Add a link
Reference in a new issue