Skip to content
Snippets Groups Projects
Commit 5c9a46b0 authored by Christoph Lehmann's avatar Christoph Lehmann
Browse files

[PL/Refl] Added assertions for improved compiler error messages

parent 8b00e889
No related branches found
No related tags found
No related merge requests found
...@@ -375,6 +375,13 @@ void forEachReflectedFlattenedIPDataAccessor( ...@@ -375,6 +375,13 @@ void forEachReflectedFlattenedIPDataAccessor(
Accessor_CurrentLevelFromIPDataVecElement const& Accessor_CurrentLevelFromIPDataVecElement const&
accessor_current_level_from_ip_data_vec_element) accessor_current_level_from_ip_data_vec_element)
{ {
static_assert(boost::mp11::mp_is_list_v<ReflectionDataTuple>,
"The passed reflection data is not a std::tuple.");
static_assert(
std::is_same_v<ReflectionDataTuple,
boost::mp11::mp_rename<ReflectionDataTuple, std::tuple>>,
"The passed reflection data is not a std::tuple.");
boost::mp11::tuple_for_each( boost::mp11::tuple_for_each(
reflection_data, reflection_data,
[&accessor_ip_data_vec_in_loc_asm, [&accessor_ip_data_vec_in_loc_asm,
...@@ -449,7 +456,14 @@ template <int Dim, typename LocAsmIF, typename Callback, typename ReflData> ...@@ -449,7 +456,14 @@ template <int Dim, typename LocAsmIF, typename Callback, typename ReflData>
void forEachReflectedFlattenedIPDataAccessor(ReflData const& reflection_data, void forEachReflectedFlattenedIPDataAccessor(ReflData const& reflection_data,
Callback const& callback) Callback const& callback)
{ {
boost::mp11::tuple_for_each( using namespace boost::mp11;
static_assert(mp_is_list_v<ReflData>,
"The passed reflection data is not a std::tuple.");
static_assert(std::is_same_v<ReflData, mp_rename<ReflData, std::tuple>>,
"The passed reflection data is not a std::tuple.");
tuple_for_each(
reflection_data, reflection_data,
[&callback]<typename Class, typename Accessor>( [&callback]<typename Class, typename Accessor>(
ReflectionData<Class, Accessor> const& refl_data) ReflectionData<Class, Accessor> const& refl_data)
...@@ -469,9 +483,8 @@ void forEachReflectedFlattenedIPDataAccessor(ReflData const& reflection_data, ...@@ -469,9 +483,8 @@ void forEachReflectedFlattenedIPDataAccessor(ReflData const& reflection_data,
// SomeAllocator> is a list in // SomeAllocator> is a list in
// the Boost MP11 sense // the Boost MP11 sense
static_assert( static_assert(
std::is_same_v< std::is_same_v<AccessorResult,
AccessorResult, mp_rename<AccessorResult, std::vector>>,
boost::mp11::mp_rename<AccessorResult, std::vector>>,
"We expect a std::vector, here."); "We expect a std::vector, here.");
// Now, we know that AccessorResult is std::vector<Member>. To be // Now, we know that AccessorResult is std::vector<Member>. To be
// more specific, AccessorResult is a std::vector<IPData> and Member // more specific, AccessorResult is a std::vector<IPData> and Member
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment