The above fails with the same error message with g++ 2.95, 3.3,
3.3.2, 3.4.3 and '4.0.0 20040919 (experimental)'.
Surprisingly, it succeeds with gcc-3.4.0.
The solution is trivial: replace
Consumer::Consumer Consumer;
with
Consumer::Consumer consumer; // or
Consumer::Consumer consumer_; // or
Consumer::Consumer theConsumer; // or
Note, that one of the widely-accepted naming conventions is to use
types that begin with a capital letter and variables that do not.
Naming both variables and types the same is certainly confusing,
and generally considered a bad style (TM).