Genericity is *not* templates

  • Thread starter E. Robert Tisdale
  • Start date
E

E. Robert Tisdale

According to the C++ FAQ Lite:

http://www.parashift.com/

[34.11] What is "genericity"?

Yet another way to say, "class templates."

Not to be confused with "generality"
(which just means avoiding solutions which are overly specific),
"genericity" means class templates.

This is *not* correct.
Class templates are *not* generally generic.
Usually, class templates are only be used to generate template classes
for a restricted set of types.
Only class templates which are designed to generate template classes
for *all* types are truly generic.
The standard vector class template, for example, is generic but
the standard valarry class template is *not* generic
because it only makes sense for numeric types.
 
S

Steven T. Hatton

E. Robert Tisdale said:
According to the C++ FAQ Lite:

http://www.parashift.com/

[34.11] What is "genericity"?

Yet another way to say, "class templates."

Not to be confused with "generality"
(which just means avoiding solutions which are overly specific),
"genericity" means class templates.

This is *not* correct.
Class templates are *not* generally generic.
Usually, class templates are only be used to generate template classes
for a restricted set of types.
Only class templates which are designed to generate template classes
for *all* types are truly generic.
The standard vector class template, for example, is generic but
the standard valarry class template is *not* generic
because it only makes sense for numeric types.

So, what you're telling us is there are generic templates and branded(TM)
templates? :)

Seriously, I find your observation interesting. Is this interpretation of
the meaning of 'genericity' your own, or is there an 'established
authority'?
 
E

E. Robert Tisdale

Steven said:
E. Robert Tisdale wrote:

According to the C++ FAQ Lite:

http://www.parashift.com/

[34.11] What is "genericity"?

Yet another way to say, "class templates."

Not to be confused with "generality"
(which just means avoiding solutions which are overly specific),
"genericity" means class templates.

This is *not* correct.
Class templates are *not* generally generic.
Usually, class templates are only be used to generate template classes
for a restricted set of types.
Only class templates which are designed to generate template classes
for *all* types are truly generic.
The standard vector class template, for example, is generic but
the standard valarry class template is *not* generic
because it only makes sense for numeric types.


So, what you're telling us is there are
generic templates and branded(TM) templates? :)

Seriously, I find your observation interesting.
Is this interpretation of the meaning of 'genericity' your own,
or is there an 'established authority'?

Pick the dictionary of your choice. I use
The American Heritage® Dictionary of the English Language:
Fourth Edition:

http://www.bartleby.com/61/

generic

ADJECTIVE:1. Relating to or descriptive of an entire group or class;
general. See synonyms at general.

SYNONYMS:general, common, generic, universal These adjectives mean
belonging to, relating to, or affecting the whole: the general welfare;
a common enemy; generic likenesses; universal military conscription.
 
L

Leor Zolman

According to the C++ FAQ Lite:

http://www.parashift.com/

[34.11] What is "genericity"?

Yet another way to say, "class templates."

Not to be confused with "generality"
(which just means avoiding solutions which are overly specific),
"genericity" means class templates.

This is *not* correct.
Class templates are *not* generally generic.
Usually, class templates are only be used to generate template classes
for a restricted set of types.
Only class templates which are designed to generate template classes
for *all* types are truly generic.
The standard vector class template, for example, is generic but
the standard valarry class template is *not* generic
because it only makes sense for numeric types.

I suppose the word "genericity" doesn't necessarily in and of itself have
to imply "templates." But in the context of C++, it pretty much does, and
the C++ FAQ Lite isn't attempting to define terms as used outside that
context. In any case, C++ happens to be the only context /I've/ ever seen
it used in. While it isn't in the Merriam-Webster online dictionary as such
(note that under "generic", the MW shows "genericness", not "genericity"),
here's one technical site's definition of it:

The possibility for a language to provided (sic.) parameterized
modules or types. e.g. List(of:Integer) or List(of:people).

Okay, the grammatical error doesn't exactly inspire high levels of
confidence in the source, but this does sound right, and it certainly
describes the functionality of templates in C++.

If some templates just happen to be designed to work only for class-typed
template parameters, or even only for a very narrow selection of classes
(e.g., std::string), that hardly seems reason enough (at least to me) to
proclaim that those templates are no longer examples of "genericity".
-leor
 
L

Leor Zolman

Pick the dictionary of your choice. I use
The American Heritage® Dictionary of the English Language:
Fourth Edition:

http://www.bartleby.com/61/

generic

That's "generic", a form of which is "genericness". We're talking about
"genericity", for which I haven't found any (non-nerdish) dictionary
entries yet.
-leor
 
H

Howard

E. Robert Tisdale said:
According to the C++ FAQ Lite:

http://www.parashift.com/

[34.11] What is "genericity"?

Yet another way to say, "class templates."

Not to be confused with "generality"
(which just means avoiding solutions which are overly specific),
"genericity" means class templates.

This is *not* correct.
Class templates are *not* generally generic.
Usually, class templates are only be used to generate template classes
for a restricted set of types.
Only class templates which are designed to generate template classes
for *all* types are truly generic.
The standard vector class template, for example, is generic but
the standard valarry class template is *not* generic
because it only makes sense for numeric types.

It sounds to me like you're applying the description backwards. The
statement does not say the term "templates" implies "genericity" (or
"genericness"), but the other way around: that saying "genericity" implies
"templates". So if some templates are not "generic", that's fine, but of
you want to apply a "generic" solution, then you're talking about using
tmeplates.

"Of course, that's just my opinion...I could be wrong."

-Howard
 
E

E. Robert Tisdale

Leor said:
E. Robert Tisdale said:
According to the C++ FAQ Lite:

http://www.parashift.com/

[34.11] What is "genericity"?

Yet another way to say, "class templates."

Not to be confused with "generality"
(which just means avoiding solutions which are overly specific),
"genericity" means class templates.

This is *not* correct.
Class templates are *not* generally generic.
Usually, class templates are only be used to generate template classes
for a restricted set of types.
Only class templates which are designed to generate template classes
for *all* types are truly generic.
The standard vector class template, for example, is generic but
the standard valarry class template is *not* generic
because it only makes sense for numeric types.


I suppose the word "genericity" doesn't necessarily in and of itself have
to imply "templates." But in the context of C++, it pretty much does, and
the C++ FAQ Lite isn't attempting to define terms as used outside that
context. In any case, C++ happens to be the only context /I've/ ever seen
it used in. While it isn't in the Merriam-Webster online dictionary as such
(note that under "generic", the MW shows "genericness", not "genericity"),
here's one technical site's definition of it:

The possibility for a language to provided (sic.) parameterized
modules or types. e.g. List(of:Integer) or List(of:people).

Okay, the grammatical error doesn't exactly inspire high levels of
confidence in the source, but this does sound right, and it certainly
describes the functionality of templates in C++.

If some templates just happen to be designed to work only for class-typed
template parameters, or even only for a very narrow selection of classes
(e.g., std::string), that hardly seems reason enough (at least to me) to
proclaim that those templates are no longer examples of "genericity".

Genericity implies that the class template is *generic* or general.
Few class templates have that property.
The standard complex class templates, for example,
only work for floating-point types float, double and long double.

Although genericity implies class templates in C++,
the converse is seldom true.
Class templates do *not* imply genericity in C++.
 
E

E. Robert Tisdale

Howard said:
E. Robert Tisdale said:
According to the C++ FAQ Lite:

http://www.parashift.com/

[34.11] What is "genericity"?

Yet another way to say, "class templates."

Not to be confused with "generality"
(which just means avoiding solutions which are overly specific),
"genericity" means class templates.

The statement does not say [that]
the term "templates" implies "genericity" (or "genericness")
but the other way around:
that saying "genericity" implies "templates".
So if some templates are not "generic", that's fine
but, if you want to apply a "generic" solution,
then you're talking about using templates.

Correct.
 
S

Steven T. Hatton

E. Robert Tisdale said:
Steven T. Hatton wrote:
Pick the dictionary of your choice. I use
The American Heritage® Dictionary of the English Language:
Fourth Edition:

Yup! That's my dictionary of choice!

www.dict.org is what I get from kdict on my Linux box.
generic

ADJECTIVE:1. Relating to or descriptive of an entire group or class;
general. See synonyms at general.

SYNONYMS:general, common, generic, universal These adjectives mean
belonging to, relating to, or affecting the whole: the general welfare;
a common enemy; generic likenesses; universal military conscription.

I hope I didn't come across as challenging your usage. That wasn't my
intent. I just received my copy of _C++ Templates: The Complete Guide_,
and the authors do take issue with the simplistic notion that 'programming
with tmplates'='generic programming'. They suggest the distinguishing
feature of generic programming is that "[t]emplates have to be designated
in a framework for the purpose of enabling a multitude of useful
combination." That statement seems to be rather open to interpretation.

Regardless of the semantics, the observation you presented is significant.
I'm not taking a side in the genericity debate. ;-)
 
C

Claudio Puviani

E. Robert Tisdale said:
According to the C++ FAQ Lite:

http://www.parashift.com/

[34.11] What is "genericity"?

Yet another way to say, "class templates."

Not to be confused with "generality"
(which just means avoiding solutions which are
overly specific),
"genericity" means class templates.

This is *not* correct.

You have to read it in context. You're overanalyzing a FAQ, not a standard
document. There's no requirement for an item in a FAQ to be rigorously
accurate and complete. For anyone looking for a quick answer to "what is
genericity" in the context of C++, pointing them to templates isn't doing
them a disservice. Are there other ways to implement genericity? Plenty, but
discussing them would be terribly out of place in a FAQ.
Class templates are *not* generally generic.

NOTHING is generally generic. You can't put unrealistic expectations on
templates.
Usually, class templates are only be used to generate
template classes for a restricted set of types.

Any generic solution is limited to types for which the operations make
sense.
Only class templates which are designed to generate
template classes for *all* types are truly generic.
Absurd.

The standard vector class template, for example, is
generic

Wrong! Vectors can only be instantiated on certain types, namely, those that
implement value semantics. You can't have vectors of objects that can't be
copied or directly instantiated.
but the standard valarry class template is *not* generic
because it only makes sense for numeric types.

It's generic for that domain. It's unreasonable, unrealistic, and naive to
expect any solution to cross all possible problem domains. You need to
rethink your absolutist preconceptions.

Claudio Puviani
 
B

Buster

E. Robert Tisdale said:
E. Robert Tisdale wrote:
[snip]
[snip]

ADJECTIVE:1. Relating to or descriptive of an entire group or class;
general. See synonyms at general.

[snip]

Who says the numeric types don't comprise an "entire group or class"?

From the Oxford Concise English Dictionary, 9th edition, "*generic*
[...] 2 /Biol./ Characteristic of or belonging to a genus." In this
other technical sense, then, genericity is quite a limited thing: it
doesn't refer to entire families, orders, classes, phyla or kingdoms.
 
T

tom_usenet

According to your definition below, that isn't a problem.
ADJECTIVE:1. Relating to or descriptive of an entire group or class;
general. See synonyms at general.

valarray relates to the entire group/class of numeric types. What is
non-generic about that?

Tom
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,731
Messages
2,569,432
Members
44,832
Latest member
GlennSmall

Latest Threads

Top