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; }
4.8.0 is fine and the issue isn't a regression.