This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/24139] Forward declaration of class in template class
- From: "redi at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 1 Oct 2005 14:52:26 -0000
- Subject: [Bug c++/24139] Forward declaration of class in template class
- References: <20050930085629.24139.mspencer@ndsuk.com>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From redi at gcc dot gnu dot org 2005-10-01 14:52 -------
This is a revised version, which should compile but doesn't:
#include <iostream>
using namespace std;
template<typename T>
class Hide {
public:
Hide();
class Hidden;
private:
Hidden *a;
};
template<>
class Hide<int>::Hidden
{
public:
Hidden();
};
template<>
Hide<int>::Hide() {
a=new Hidden();
}
// N.B. no "template<>"
Hide<int>::Hidden::Hidden() {
cout << "Hello from int->Hidden" << endl;
}
int main(int argc,char *argv[])
{
Hide<int> b;
}
pr24139.2.cc:28: error: explicit specialization of
?Hide<int>::Hidden<int>::Hidden()? must be introduced by ?template <>?
pr24139.2.cc:28: error: template-id ?Hidden<>? for
?Hide<int>::Hidden<int>::Hidden()? does not match any template declaration
pr24139.2.cc:28: error: invalid function declaration
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24139