Hi,
On 08/21/2011 12:48 PM, Marc Glisse wrote:
Wrong mailing list, you are looking for gcc-help.
Ok, sorry for that.
But, I looked thoroughly to the kyua code and I didn't see anything
wrong (even if I might have missed something, I admit it. I'm not a C++
god).
In fact, after a quick look at the g++-4.6 changelog, I found the
following item:
« * When an extern declaration within a function does not match a
declaration in the enclosing context, G++ now properly declares the name
within the namespace of the function rather than the namespace which was
open just before the function definition (c++/43145). »
See: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43145
My work hypothesis for now is that the fix of this issue has changed
something in the way namespaces are handled
I think this issue is related to this change and that a bug has been
introduced in the compiler when c++/43145 has been fixed.
But, this is only an hypothesis.
From the code. The definition (not just declaration) of templates
should be available everywhere they are used (or you can manually force
instantiation in one translation unit and inhibit it in the others).
And, could you spot the change that occurred in g++ between g++-4.5 and
g++-4.6 that changed its behavior ?
Why was it possible before and not anymore now ?
(sorry I didn't manage to circumvent the problem to a small piece of
code),
Er, what did you try?
I am currently trying to do so and I didn't succeed to better understand
the problem by now.
My guess is that it is related to the namespace handling and I am
working in this direction. But, I have no more to say (except my
intuition that it might be related) and the code of kyua is new to me,
so it does take some time.
Regards
--
Emmanuel Fleury
If you can not measure it, you can not improve it.
-- Lord Kelvin