Newer gcc swallow version control keywords
Oleg Goldshmidt
pub at goldshmidt.org
Tue Oct 18 14:56:39 IST 2011
On Tue, Oct 18, 2011 at 2:25 PM, Nadav Har'El <nyh at math.technion.ac.il> wrote:
> On Tue, Oct 18, 2011, Elazar Leibovich wrote about "Re: Newer gcc swallow version control keywords":
>> fileversion.h:
>> class FileVersion {FileVersion(const string& v){__files.push_back(v);}};
>>
>> foo.cc:
>> static const FileVersion foo("$id$");
>
> Well, basically you're showing that unlike C where a static constant that
> is never used can be optimized out, in C++ even a static constant that is
> never used can NOT, and therefore will not, be optimized out, because its
> constructor could have any unknown side-effects (in your example, writing
> to a global vector). This is interesting.
No, no, it is optimized out - Elazar tried to make a global non-static
(non-file-scope) variable (non-constant) that *is* used (by the main()
routine - and may be used, including modification, by anyone else.
Apart from that the only difference between C and C++ is that in C++
you can write a relatively simple constructor code (while dragging
stuff like <vector< and <string> and possibly <algorithm> in) that
will insert a reference into a global container.
--
Oleg Goldshmidt | pub at goldshmidt.org
More information about the Linux-il
mailing list