http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56685
Bug #: 56685
Summary: default template parameter cannot precede a
non-default template parameter in a function
Classification: Unclassified
Product: gcc
Version: 4.7.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: [email protected]
ReportedBy: [email protected]
Following code is legal, according to spec, but not compile.
f(0) works fine
g(0) is the same thing, but not compile.
more discussion:
http://stackoverflow.com/questions/11684954/can-function-default-template-parameter-be-put-before-non-default-ones
-----------------------------------
#include <iostream>
#include <array>
#include <vector>
using namespace std;
struct X {};
template <class T = X, typename U>
void f(const U& m) {}
template <class T = X, typename U>
void g(const U& m) { auto ff = [] () {}; }
int main()
{
f(0);
g(0);
return 0;
}