This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/65728] New: template instantiation complains of sizeof failing due to incomplete definition


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;
}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]