Class template Dune::XT::Common::is_self<Self, Args>

Inherits from std::false_type.

template<class Self, class ...Args>
class Dune::XT::Common::is_self<Self, Args> : public std::false_type

Trait whose value is true iff Args is a single argument that, ignoring cv- and reference-qualifiers, is Self.

This is used to constrain perfect-forwarding constructors of the form

template <class... Args>
explicit C(Args&&... args);

Such a constructor is a better match than the copy/move constructor for non-const lvalues of type C and would therefore silently hijack copy construction. Guarding it with require_not_self_t disables the forwarding constructor exactly in the copy/move case (see there for the recommended spelling).