Here the additional hypothesis that the tool is nor used for
"some more or less ideological reason" sneaks in.
Sort of. The link Jeff posted referred to a discussion of
garbage collection. My use of "stupid" in that discussion was
in a very specific context, where the argument was against
introducing garbage collection into the language (i.e. against
supporting the tool, rather than against using it in a specific
context), and were purely ideological (garbage collection
renders otherwise competent programmers idiots, and such).
Having a tool available, and banning it per se, is stupid.
Trying to limit its availability to other programmers is even
worse. Like all tools, however, it isn't a silver bullet, and
shouldn't be used everywhere, and it doesn't solve all problems.
Even if local coding standards should explicitly forbid the
use of the certain tool, I would not assume some ideology to
be the driving cause behind. Each and every tool is used
throughout a shop requires the programmers who work there to
familiarize themselves with the tool. The more tools, the
steeper the learning curve.
That's what I'd call a "political" motivation. Except that the
word political is loaded with negative connotations which don't
apply here. But I don't know of another word which means the
same thing in its original sense. (In fact, I'm thinking of the
French word "politique", which originally meant anything related
to organized société, and can even today be used positively.)
Most of the time, however, I would not expect coding standards
to prevent the use of a particular technique. If the technique
isn't used, it's most likely because the developers didn't
think of it.
If the technique requires significant external support (e.g.
like garbage collection, or a GUI library), I would expect the
decision to be made on a project basis, and consecrated in the
coding guidelines of the project. If you want to use garbage
collection, then the time necessary to integrate the Boehm
collector will have to be planned into the project, and if the
project is using Qt, then you can't use wxWidgets for your
particular components.
In cases like Fallible, of course, I can't imagine a coding
guideline forbidding it, and an individual who thinks of it can
easily introduce it. On the other hand, there's something to be
said for standardizing the mechanisms of error reporting (for
the specific cases, e.g. if the error should be handled
immediately), and it's probably worthwhile for a project to have
a single instance of Fallible, somewhere in its basic library.
That observation should give you reason to revisit your
assumption. _Why_ do you expect any experienced C++ programmer
to be familiar with Fallible?
Wishful thinking?
Maybe because it's been around for so
long.
Given that C++ is a multiparadigm language used for a vast
variety of purposes, I think there are plenty of ways to
accumulate experience without coming across Fallible. (More
precisely, I think, that for any particular technique X, you
can gather much experience yet never run into X. So no single
technique can serve as a litmus test for experience.)
You're probably right, of course. But it's still frustrating
that so many programmers apparently aren't aware of such a basic
technique.