What's so special about this group is the CLI part. In this context a
class [snip unrelated comment on "the CLI part"]
is always meant to be a ref class. Therefore, I agree with Jochen
that an
Except when it is an interface class, value class, or unmanaged
class... these are all "class types" in C++/CLI.
The word "always" means always, that is, without an exception. A value
type
is called a value type, an interface an interface and a (ref) class
is called a class. There's no need to distinguish between
different "types of classes" because the word class itself is unambiguous.
Not "types of classes". "class types", a term used frequently in the C++
and C++/CLI specifications.
In C++/CLI, the keyword "class" IS ambiguous. You need to know whether it
is prefixed by "value", "ref", "interface" or nothing to know its meaning.
MSFT's CLI specification
(
http://msdn.microsoft.com/de-de/netframework/aa569283(en-us).aspx) does
not
even mention the word "interface class". It also says: "For historical
reasons 'value class' can be used instead of 'value type' although the
latter is preferred." (source: MS Partition I, 13.1, page 58)
This is the C++/CLI group, not the C# group. The documentation you
mentioned is all C#-centric. The "CLI" specification you mentioned is not
the specification for C++/CLI. That would be here:
specification for C++/CLI:
http://www.ecma-international.org/publications/standards/Ecma-372.htm
"interface class" is part of the C++/CLI syntax, how you can deny the
existence of the term is beyond me.
You might also try reading section 12.2, which is just one of many that
identifies "class types" in C++/CLI as "Ref class types, value class types,
interface types, and delegate types".
Sure, if you want to make it more complicated than necessary, you can
declare the word "class" being ambiguous instead of just calling an
interface an interface and a value type value type. For my part, I do know
what a class is without asking which kind of class.
Again you claim that "class" is unambiguous in C++/CLI. Actually, the
meaning is context-sensitive.
You're entitled to your opinion, but please don't state it as fact in the
newsgroup where there are people trying to learn C++/CLI. They need to hear
accurate information about the C++/CLI type system, not your improper
attempt to impose C# terminology on C++ (BTW C++ used the terminology first,
so if you don't accept that terms can mean different things for different
languages, it's C# that's wrong).
Is it also your opinion that I can't create a reference type using "struct"?