OGS
Invoke.h
Go to the documentation of this file.
1
10#pragma once
11
12#include <boost/mp11.hpp>
13
15{
16namespace detail
17{
18template <typename Result, typename Class, typename... Args>
19constexpr bool areEvalArgumentTypesUnique(Result (Class::*)(Args...))
20{
21 using namespace boost::mp11;
22 return mp_is_set<
23 mp_transform<std::remove_cvref_t, mp_list<Args...>>>::value;
24}
25
26template <typename Result, typename Class, typename... Args>
27constexpr bool areEvalArgumentTypesUnique(Result (Class::*)(Args...) const)
28{
29 using namespace boost::mp11;
30 return mp_is_set<
31 mp_transform<std::remove_cvref_t, mp_list<Args...>>>::value;
32}
33} // namespace detail
34
40template <typename T>
42{
44}
45
48template <typename Model>
49constexpr void assertEvalArgsUnique(Model const&)
50{
51 static_assert(areEvalArgumentTypesUnique<std::remove_cvref_t<Model>>());
52}
53
54} // namespace ProcessLib::SmallDeformation
constexpr bool areEvalArgumentTypesUnique(Result(Class::*)(Args...))
Definition Invoke.h:19
constexpr void assertEvalArgsUnique(Model const &)
Definition Invoke.h:49
constexpr bool areEvalArgumentTypesUnique()
Definition Invoke.h:41