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

            Bug ID: 60067
           Summary: bogus error default template arguments may not be used
                    in function templates
           Product: gcc
           Version: 4.8.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: msebor at gmail dot com

GCC 4.8.2 issues the bogus error below on the following valid C++ '98 program.
Instantiating C (or the whole definition of foo) isn't necessary to trigger the
error.

$ cat u.cpp && g++ -c -o/dev/null u.cpp
template <class> struct A;
template <class> struct B { enum { v = 1 };  };

template <class T = void (A<int>)>
struct C {
  void f () {
    void g (int [B<T>::v]);
  }
};

void foo (void) {
    C<int>().f ();
}

u.cpp: In member function ‘void C<T>::f()’:
u.cpp:7:26: error: default template arguments may not be used in function
templates without -std=c++11 or -std=gnu++11
     void g (int [B<T>::v]);
                          ^

Reply via email to