16 #ifndef dealii_base_mutable_bind_h 17 #define dealii_base_mutable_bind_h 83 template <
typename ReturnType,
class... FunctionArgs>
91 using TupleType = std::tuple<
typename std::remove_cv<
92 typename std::remove_reference<FunctionArgs>::type>::type...>;
98 template <
class FunctionType>
105 template <
class FunctionType>
112 template <
class FunctionType>
151 const std::unique_ptr<Patterns::PatternBase> &pattern =
158 const std::function<ReturnType(FunctionArgs...)>
function;
190 template <
typename ReturnType,
class... FunctionArgs>
198 template <
typename ReturnType,
class... FunctionArgs>
200 mutable_bind(std::function<ReturnType(FunctionArgs...)>,
213 template <
typename ReturnType,
class... FunctionArgs>
220 template <
typename ReturnType,
class... FunctionArgs>
222 mutable_bind(std::function<ReturnType(FunctionArgs...)>);
227 template <
typename ReturnType,
class... FunctionArgs>
228 template <
class FunctionType>
230 FunctionType
function,
238 template <
typename ReturnType,
class... FunctionArgs>
239 template <
class FunctionType>
248 template <
typename ReturnType,
class... FunctionArgs>
249 template <
class FunctionType>
256 template <
typename ReturnType,
class... FunctionArgs>
265 template <
typename ReturnType,
class... FunctionArgs>
268 FunctionArgs &&... args)
270 arguments = std::make_tuple(std::move(args)...);
275 template <
typename ReturnType,
class... FunctionArgs>
284 template <
typename ReturnType,
class... FunctionArgs>
287 const std::string & value_string,
288 const std::unique_ptr<Patterns::PatternBase> &pattern)
296 template <
typename ReturnType,
class... FunctionArgs>
301 return MutableBind<ReturnType, FunctionArgs...>(
function,
307 template <
typename ReturnType,
class... FunctionArgs>
311 return MutableBind<ReturnType, FunctionArgs...>(
function);
316 template <
typename ReturnType,
class... FunctionArgs>
318 mutable_bind(std::function<ReturnType(FunctionArgs...)>
function,
321 return MutableBind<ReturnType, FunctionArgs...>(
function,
327 template <
typename ReturnType,
class... FunctionArgs>
329 mutable_bind(std::function<ReturnType(FunctionArgs...)>
function)
331 return MutableBind<ReturnType, FunctionArgs...>(
function);
MutableBind(FunctionType function, FunctionArgs &&... arguments)
const std::function< ReturnType(FunctionArgs...)> function
void parse_arguments(const std::string &value_string, const std::unique_ptr< Patterns::PatternBase > &pattern=Patterns::Tools::Convert< TupleType >::to_pattern())
ReturnType operator()() const
void set_arguments(TupleType &&arguments)
MutableBind< ReturnType, FunctionArgs... > mutable_bind(ReturnType(*function)(FunctionArgs...), typename identity< FunctionArgs >::type &&... arguments)
#define DEAL_II_NAMESPACE_CLOSE
auto apply(F &&fn, Tuple &&t) -> decltype(apply_impl(std::forward< F >(fn), std::forward< Tuple >(t), std_cxx14::make_index_sequence< std::tuple_size< typename std::remove_reference< Tuple >::type >::value >()))
std::tuple< typename std::remove_cv< typename std::remove_reference< FunctionArgs >::type >::type... > TupleType
#define DEAL_II_NAMESPACE_OPEN