Hello! On Sat, Nov 26, 2005 at 10:02:27PM +0100, Richard B. Kreckel wrote:
Sheplyakov Alexei wrote:
if g++-4.1 -DHAVE_CONFIG_H -I. -I. -I../config -I./../ginac -I../ginac -O2 -g -finline-limit=1000 -pipe -MT exam_structure.o -MD -MP -MF ".deps/exam_structure.Tpo" -c -o exam_structure.o exam_structure.cpp; \ then mv -f ".deps/exam_structure.Tpo" ".deps/exam_structure.Po"; else rm -f ".deps/exam_structure.Tpo"; exit 1; fi exam_structure.cpp:50: error: specialization of ‘void GiNaC::structure<T, ComparisonPolicy>::print(const GiNaC::print_context&, unsigned int) const [with T = sprod_s, ComparisonPolicy = GiNaC::compare_std_less]’ in different namespace exam_structure.cpp:50: error: from definition of ‘void GiNaC::structure<T, ComparisonPolicy>::print(const GiNaC::print_context&, unsigned int) const [with T = sprod_s, ComparisonPolicy = GiNaC::compare_std_less]’ exam_structure.cpp:56: error: specialization of ‘GiNaC::ex GiNaC::structure<T, ComparisonPolicy>::eval(int) const [with T = sprod_s, ComparisonPolicy = GiNaC::compare_std_less]’ in different namespace exam_structure.cpp:56: error: from definition of ‘GiNaC::ex GiNaC::structure<T, ComparisonPolicy>::eval(int) const [with T = sprod_s, ComparisonPolicy = GiNaC::compare_std_less]’
Are you sure this is not the latest GCC whim which will disappear again?
See ISO C++ standard, 14.7.3, paragraph 2.
If yes, the specialization of bar::f() below must really be wrapped in namespace A?
namespace A { template<class T> class foo { public: void f(); }; } // namespace A namespace B { typedef A::foo<int> bar; template<> void bar::f(); } // namespace B
Yes.
Oouw, sucks...
I agree with you completely. Best regards, Alexei -- All science is either physics or stamp collecting.