#ifndef RFL_INTERNAL_TOPTRFIELD_HPP_ #define RFL_INTERNAL_TOPTRFIELD_HPP_ #include #include "../Field.hpp" #include "../Flatten.hpp" #include "../always_false.hpp" #include "StringLiteral.hpp" namespace rfl { namespace internal { template inline auto to_ptr_field(Field<_name, Type>& _field) { using T = std::remove_reference_t; return Field<_name, T*>(&_field.value_); } template inline auto to_ptr_field(const Field<_name, Type>& _field) { using T = std::remove_cvref_t; return Field<_name, const T*>(&_field.value_); } template inline auto to_ptr_field(Flatten& _field) { using T = std::remove_reference_t; return Flatten(&_field.value_); } template inline auto to_ptr_field(const Flatten& _field) { using T = std::remove_cvref_t; return Flatten(&_field.value_); } } // namespace internal } // namespace rfl #endif