// RUN: %clang_cc1 -std=c++17 -verify %s // expected-no-diagnostics template struct DominatorTreeBase { static constexpr bool IsPostDominator = true; }; extern template class DominatorTreeBase; constexpr bool k = DominatorTreeBase::IsPostDominator; namespace CompleteType { template constexpr int f(const bool (&)[N]) { return 0; } template struct X { static constexpr bool arr[] = {V...}; static constexpr int value = f(arr); }; constexpr int n = X::value; } template struct A { static const int n; static const int m; constexpr int f() { return n; } constexpr int g() { return n; } }; template constexpr int A::n = sizeof(A) + sizeof(T); template inline constexpr int A::m = sizeof(A) + sizeof(T); static_assert(A().f() == 5); static_assert(A().g() == 5);