[clang] [clang][Sema] Fix rejection of non-dependent void{} during template instantiation (PR #228340)

Ivy Xu via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 2 06:10:09 PDT 2026


================
@@ -1646,8 +1646,8 @@ Sema::BuildCXXTypeConstructExpr(TypeSourceInfo *TInfo,
         cast<InitListExpr>(Exprs[0])->getNumInits() == 0) {
       return CXXFunctionalCastExpr::Create(
           Context, Ty.getUnqualifiedType(), VK_PRValue, TInfo, CK_ToVoid,
-          Exprs[0], /*Path=*/nullptr, CurFPFeatureOverrides(),
-          Exprs[0]->getBeginLoc(), Exprs[0]->getEndLoc());
+          Exprs[0], /*Path=*/nullptr, CurFPFeatureOverrides(), SourceLocation(),
+          Exprs[0]->getEndLoc());
     }
----------------
IvyXu420 wrote:

I think it's for the consistency.

We are already using CXXFunctionalCastExpr for list initialization (`T{}`), while using CXXScalarValueInitExpr for scalar-type value initialization (`T()`). Shouldn't `void{}` and `void()` mirror that?

https://github.com/llvm/llvm-project/pull/228340


More information about the cfe-commits mailing list