Environment : i686-pc-linux-gnu Compiler Version: GCC 3.3.2 Kernel Version : 2.4.7-10
It seems, not possible to specialize a template member functions const. I got a file(.impl) which got the following template functions( generalized and specialized template functions ) and i got the corresponding header file ( where this .impl file is getting included ). IOCM::Status IOCM_SequenceTempl<IOCM::Char>::_skip(IOCM::MessageBox& msgBox); IOCM::Status IOCM_SequenceTempl<IOCM::Octet>::_skip(IOCM::MessageBox& msgBox); IOCM::Status IOCM_SequenceTempl<IOCM::Short>::_skip(IOCM::MessageBox& msgBox); IOCM::Status IOCM_SequenceTempl<IOCM::UShort>::_skip(IOCM::MessageBox& msgBox); IOCM::Status IOCM_SequenceTempl<IOCM::Long>::_skip(IOCM::MessageBox& msgBox); IOCM::Status IOCM_SequenceTempl<IOCM::ULong>::_skip(IOCM::MessageBox& msgBox); IOCM::Status IOCM_SequenceTempl<IOCM::Float>::_skip(IOCM::MessageBox& msgBox); IOCM::Status IOCM_SequenceTempl<T>::_skip(IOCM::MessageBox& msgBox); But, the build is getting failed, with the following error( for all the template functions ). /cm4/objects/gant-c/ghostr/cm4/fsn/app/asam/eqptDomain/eqptMgntCore/common/AppliqueSensorListener.o(.text+0x0): In function `IOCM_SequenceTempl<char>::_size() const': /cm4/fsn/include/iocm/Sequence.impl:293: multiple definition of `IOCM_SequenceTempl<char>::_size() const' /cm4/objects/gant-c/ghostr/cm4/fsn/app/asam/eqptDomain/eqptMgntCore/common/AppliqueHandler.o(.text+0x0):/cm4/fsn/include/iocm/Sequence.impl:293: first defined here /cm4/objects/gant-c/ghostr/cm4/fsn/app/asam/eqptDomain/eqptMgntCore/common/AppliqueSensorListener.o(.text+0x18): In function `IOCM_SequenceTempl<char>::_pack(IOCM_MessageBox&) const': /cm4/fsn/include/iocm/Sequence.impl:305: multiple definition of `IOCM_SequenceTempl<char>::_pack(IOCM_MessageBox&) const' /cm4/objects/gant-c/ghostr/cm4/fsn/app/asam/eqptDomain/eqptMgntCore/common/AppliqueHandler.o(.text+0x18):/cm4/fsn/include/iocm/Sequence.impl:305: first defined here There is no problem with 2.95.3 But, when i remove the .impl file( which got the template function definitions ) from the corresponding header file, compilation went through, but its failing during linking stage for the same reason giving the following error message for all the template functions. Linking fails with the following error( for all the template functions ). /cm4/fsn/app/asam/atm2/nt/../export/idl/AtmApplication_ifc.cc:344: undefined reference to `IOCM_SequenceTempl<Eqpt::LogicalIfIndex>::_size(void) const' /cm4/fsn/app/asam/atm2/nt/../export/idl/AtmApplication_ifc.cc:349: undefined reference to `IOCM_SequenceTempl<Eqpt::LogicalIfIndex>::_pack(IOCM_MessageBox &) const' -- Summary: seems not possible to specialize a template member function Product: gcc Version: 3.2.2 Status: UNCONFIRMED Severity: critical Priority: P1 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: ramya dot chandar at wipro dot com CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18306