llvm-capstone/clang/test/SemaTemplate/instantiate-member-specialization.cpp
Richard Smith c6d86b6b45 Properly collect template arguments from a class-scope function template
specialization.

Fixes a crash-on-valid if further template parameters are introduced
within the specialization (by a generic lambda).
2020-11-10 15:55:19 -08:00

17 lines
469 B
C++

// RUN: %clang_cc1 -std=c++20 -verify %s
// expected-no-diagnostics
namespace FunctionTemplate {
template<typename> struct S {
template<int> auto foo();
// Check that we don't confuse the depth-1 level-0 parameter of the generic
// lambda with the depth-1 level-0 parameter of the primary 'foo' template.
template<> constexpr auto foo<1>() {
return [](auto x) { return x; };
}
};
static_assert(S<void>().template foo<1>()(2) == 2);
}