Skip to content

LocalFunction typedef in DuneFunctionsL2FunctionalAssembler

The DuneFunctionsL2FunctionalAssembler has a typedef

using LocalFunction = std::decay_t<decltype(localFunction(std::declval<Function>()))>;

This does not work for functions which must not be created from an rvalue reference. For example the DiscreteGlobalBasisFunction does this:

template<typename... TT>                                                                                 
void localFunction(DiscreteGlobalBasisFunction<TT...>&& t) = delete;

One possible fix would be

using LocalFunction = typename Function::LocalFunction;

However, I'm not sure if functions which have localFunction must have this typedef. @graeser?

Another possibility would be

using LocalFunction = std::decay_t<decltype(localFunction(*f_))>;

However this would be a bit awkward as the typedef would appear very far down after the member f_ has been declared.