reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | // RUN: %clang_cc1 -std=c++17 -verify %s // expected-no-diagnostics template<bool> struct DominatorTreeBase { static constexpr bool IsPostDominator = true; }; extern template class DominatorTreeBase<false>; constexpr bool k = DominatorTreeBase<false>::IsPostDominator; namespace CompleteType { template<unsigned N> constexpr int f(const bool (&)[N]) { return 0; } template<bool ...V> struct X { static constexpr bool arr[] = {V...}; static constexpr int value = f(arr); }; constexpr int n = X<true>::value; } template <typename T> struct A { static const int n; static const int m; constexpr int f() { return n; } constexpr int g() { return n; } }; template <typename T> constexpr int A<T>::n = sizeof(A) + sizeof(T); template <typename T> inline constexpr int A<T>::m = sizeof(A) + sizeof(T); static_assert(A<int>().f() == 5); static_assert(A<int>().g() == 5); |