Quote:
Originally Posted by Narue
>PS: In the future whenever I find something not clear to me I will say: "Ah, it's probably implementation defined".
That sounds like a good way to jump into the realm of "undefined", which is something like implementation-defined, but much much more dangerous. How about instead of making assumptions when something isn't clear, you do research to make it clear?
|
Indeed. When I used the term "implementation defined" earlier I was using a language known as "C++-standardese" which is not quite the same as English, but looks enough like English to confuse people unfamiliar with some of the corners of C++.
The terms "implementation-defined behavior" (curse that impure Americanized spelling), "undefined behavior", "unspecified behavior", and several others are given very specific definitions in the C++ standard.
For example, clause 1.3.5 in the standard defines "implementation-defined behavior" as "behavior, for a wellformed program construct and correct data, that depends on the implementation and that each implementation shall document".
Then, later, section 7.1.5.2 states "It is implementation-defined whether bit-fields and objects of char type are represented as signed or unsigned quantities. The signed specifier forces char objects and bit-fields to be signed; it is redundant with other integral types."