Hi @Rudolf Meier ,
About alias templates:
template < template-parameter-list >
using identifier attr(optional) = type-id ;
attr - optional sequence of any number of attributes
identifier - the name that is introduced by this declaration, which becomes either a type name or a template name.
template-parameter-list - template parameter list, as in template declaration.
type-id - abstract declarator or any other valid type-id (which may introduce a new type, as noted in type-id). The type-id cannot directly or indirectly refer to identifier. Note that the point of declaration of the identifier is at the semicolon following type-id.
About Inheritance I suggest you to read this document.
template <typename D, typename I>
struct require_one : consume_t<D, I>
In my opinion, the code you uploaded should come from a tutorial, the point of this code is to show you inheritance between class templates. You may be confused due to lack of application of class templates.
Best regards,
Elya
If the answer is the right solution, please click "Accept Answer" and upvote it.If you have extra questions about this answer, please click "Comment".
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.