Boost logo

Boost :

Subject: Re: [boost] Nasty compile time reflection and iteration for POD types using C++14 without macro
From: Paul Fultz II (pfultz2_at_[hidden])
Date: 2016-03-22 16:04:54


That looks pretty cool. This could be useful in Fit as well for fit::unpack.

* there's no known to me way to make get<>() method constexpr
>

On gcc and clang, you could try something like this:

#define CONST_FOLD(x) (__builtin_constant_p(x) ? (x) : (x))

template <std::size_t I, class T>
constexpr decltype(auto) get(const T& val) noexcept {
    auto t = CONST_FOLD(reinterpret_cast<const
decltype(detail::as_tuple<T>())*>( std::addressof(val) ));
    return get<I>(*t);
}

Of course, this requires the user to always use `CONST_FOLD` when calling
get
as well. There might be a better way.

Paul

> --
> Best regards,
> Antony Polukhin
>
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost
>


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk