Index: clang/lib/AST/ExprConstant.cpp =================================================================== --- clang/lib/AST/ExprConstant.cpp +++ clang/lib/AST/ExprConstant.cpp @@ -10695,6 +10695,11 @@ if (MaybeElementDependentArrayFiller(ILE->getInit(I))) return true; } + + if (ILE->hasArrayFiller() && + MaybeElementDependentArrayFiller(ILE->getArrayFiller())) + return true; + return false; } return true; Index: clang/test/SemaCXX/constexpr-array-init.cpp =================================================================== --- /dev/null +++ clang/test/SemaCXX/constexpr-array-init.cpp @@ -0,0 +1,21 @@ +// RUN: %clang_cc1 -std=c++20 -verify %s + + +/// expected-no-diagnostics +struct Foo { + int a; + constexpr Foo() + : a(get_int()) { + } + + constexpr int get_int() const { + return 5; + } +}; + +static constexpr Foo bar[2][1] = { + {{}}, +}; +static_assert(bar[0][0].a == 5); +static_assert(bar[1][0].a == 5); +