repr 0.1
Reconstructable string representations and more
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages Concepts
to_tuple.h
Go to the documentation of this file.
#pragma once
#include <memory>
#include <type_traits>
namespace librepr::detail {
template <typename T>
requires(std::is_aggregate_v<std::remove_cvref_t<T>> && !std::is_array_v<std::remove_cvref_t<T>>)
constexpr auto to_tuple(T&& object) {
return visit_aggregate([]<typename... Ts>(Ts&&... members){
return librepr::Tuple<Ts...>{std::forward<Ts>(members)...};
}, std::forward<T>(object));
}
template <typename T>
requires(std::is_aggregate_v<std::remove_cvref_t<T>> && !std::is_array_v<std::remove_cvref_t<T>>)
constexpr auto to_addr_tuple(T&& object) {
return visit_aggregate([]<typename... Ts>(Ts&&... members){
}, std::forward<T>(object));
}
}