http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55576

             Bug #: 55576
           Summary: Fails to compile a call to template member function
    Classification: Unclassified
           Product: gcc
           Version: 4.7.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: antosh...@gmail.com


Created attachment 28860
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28860
Output of `gcc -v -save-temps -Wall -Wextra main.cpp`

When compiling following code:

struct factory {
 template <typename T>
 void * apply(void * address)
 {
  return new (address) T;
 }
};

template <typename T>
struct apply {
 template <typename FactoryT>
 void* operator()(FactoryT const& f, void * address) {
  return f.template apply<T>(address);
 }
};

int main() {
 int place;
 apply<int>()(factory(), &place);
 return 0;
}


Tries to instantiate structure `apply` instead of calling a `factory` member
function `apply` (prints error: invalid use of ‘struct apply<T>’).

Reply via email to