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_tdisables the forwarding constructor exactly in the copy/move case (see there for the recommended spelling).