This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/18306] New: seems not possible to specialize a template member function
- From: "ramya dot chandar at wipro dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 5 Nov 2004 04:13:29 -0000
- Subject: [Bug c++/18306] New: seems not possible to specialize a template member function
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
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