Using Class Name in a Class Template without Template Parameters
The provided C code defines a class template Link with a public member variable 'next' that lacks a typename argument. This has raised confusion as the member variable is expected to be of type 'Link
According to the C standard, this is an example of the "injected class name." Within the scope of a class template, the injected class name (simply the class name without template parameters) refers to the class template itself. When used as a type name, it is equivalent to the class name followed by the template-parameters enclosed in angle brackets.
In the case of the Link class, the injected class name 'Link' is used for the 'next' member variable. This is essentially a shorthand notation that assumes the 'next' variable type is 'Link
This convention allows for simpler and concise code within class templates. By using the injected class name, the member variable 'next' directly refers to the type of the class itself, eliminating the need for explicitly specifying the template parameters.
The above is the detailed content of How does the injected class name simplify defining member variables in C class templates?. For more information, please follow other related articles on the PHP Chinese website!