This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/65728] New: template instantiation complains of sizeof failing due to incomplete definition
- From: "ron at vaniwaarden dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 10 Apr 2015 01:28:12 +0000
- Subject: [Bug c++/65728] New: template instantiation complains of sizeof failing due to incomplete definition
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65728
Bug ID: 65728
Summary: template instantiation complains of sizeof failing due
to incomplete definition
Product: gcc
Version: 4.8.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: ron at vaniwaarden dot org
Following code fails to compile in 4.8.2, complaining about an incomplete
definition. Definition is complete and it also compiled in 4.2.1 but also
fails in 4.6.3:
#include <cstdlib>
struct S
{
void method(){}
};
template<size_t sz, size_t tot>
class genpool
{
};
template <class T>
class mempool
{
private:
genpool<sizeof(T), 10*sizeof(T)> p;
};
template <class obj, class mthd>
class functor
{
private:
obj& o;
mthd m;
static mempool<functor<obj, mthd> > pool;
};
template <class obj, class mthd>
mempool<functor<obj, mthd> > functor<obj, mthd>::pool;
int main()
{
typedef void (S::*m)();
typedef functor<S, m> fctr;
fctr f;
}