c++/9120: [3.4 regression] iostream 'forgotten' if included after template definition

bangerth@dealii.org bangerth@dealii.org
Mon Jan 13 05:17:00 GMT 2003

Old Synopsis: iostream 'forgotten' if included after template definition
New Synopsis: [3.4 regression] iostream 'forgotten' if included after template definition

State-Changed-From-To: open->analyzed
State-Changed-By: bangerth
State-Changed-When: Mon Jan  6 14:55:43 2003
    Indeed. This is a regression on the main branch, it works with
    a snapshot of 3.3 right before the branch occured. I have
    no idea what this could be.
    In a debugger one can see that the function is actually
    called, but nothing happens in it and one cannot go
    further into the calls to op<< or such. This, of course,
    is due to the fact that the assembler output for this
    function looks like so:
    	.type	p<int>::a(), @function p<int>::a():
    	pushl	%ebp
    	movl	%esp, %ebp
    	popl	%ebp
    If one adds other statements to the function, for example
    the line
        int i = 1234;
    then one gets assembler output for them, so _something_ is
    happening. But the line with std::cerr is not compiled. 
    Very strange, indeed.
    Note that the program should not compile in the first
    place, but does only since gcc does not implement two-stage
    name lookup.


More information about the Gcc-bugs mailing list