1*d644e021SAkira Hatanaka // RUN: %clang_cc1 -std=c++14 -emit-llvm -disable-llvm-optzns -verify %s 2*d644e021SAkira Hatanaka // expected-no-diagnostics 3*d644e021SAkira Hatanaka 4*d644e021SAkira Hatanaka namespace PR28795 { 5*d644e021SAkira Hatanaka template<typename T> 6*d644e021SAkira Hatanaka void func() { 7*d644e021SAkira Hatanaka enum class foo { a, b }; 8*d644e021SAkira Hatanaka auto bar = [](foo f = foo::a) { return f; }; 9*d644e021SAkira Hatanaka bar(); 10*d644e021SAkira Hatanaka } 11*d644e021SAkira Hatanaka 12*d644e021SAkira Hatanaka void foo() { 13*d644e021SAkira Hatanaka func<int>(); 14*d644e021SAkira Hatanaka } 15*d644e021SAkira Hatanaka } 16*d644e021SAkira Hatanaka 17*d644e021SAkira Hatanaka // Template struct case: 18*d644e021SAkira Hatanaka template <class T> struct class2 { 19*d644e021SAkira Hatanaka void bar() { 20*d644e021SAkira Hatanaka enum class foo { a, b }; 21*d644e021SAkira Hatanaka [](foo f = foo::a) { return f; }(); 22*d644e021SAkira Hatanaka } 23*d644e021SAkira Hatanaka }; 24*d644e021SAkira Hatanaka 25*d644e021SAkira Hatanaka template struct class2<int>; 26*d644e021SAkira Hatanaka 27*d644e021SAkira Hatanaka template<typename T> 28*d644e021SAkira Hatanaka void f1() { 29*d644e021SAkira Hatanaka enum class foo { a, b }; 30*d644e021SAkira Hatanaka struct S { 31*d644e021SAkira Hatanaka int g1(foo n = foo::a); 32*d644e021SAkira Hatanaka }; 33*d644e021SAkira Hatanaka } 34*d644e021SAkira Hatanaka 35*d644e021SAkira Hatanaka template void f1<int>(); 36