================ @@ -0,0 +1,72 @@ +//===- DynamicAllocationArgumentsCXX.h - operator new/delete args ---------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the argument candidate and resolution types for operators +// new and new[] overload resolution. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_SEMA_DYNAMICALLOCATIONARGUMENTSCXX_H +#define LLVM_CLANG_SEMA_DYNAMICALLOCATIONARGUMENTSCXX_H + +#include "clang/AST/ExprCXX.h" +#include "llvm/ADT/ArrayRef.h" +#include "llvm/ADT/SmallVector.h" + +namespace clang { + +class LookupResult; +class Sema; + +struct ImplicitAllocationArguments { + friend Sema; + + ArrayRef<Expr *> getImplicitArguments() const { + return ArrayRef(ImplicitArguments, ArgumentCount); + } + + Expr *getAlignmentArgument() const { + if (PassAlignment == AlignedAllocationMode::Yes) + return ImplicitArguments[ArgumentCount - 1]; + return nullptr; + } + + void updateLookupForMSVCCompatibility(Sema &, LookupResult &); + TypeAwareAllocationMode PassTypeIdentity; + AlignedAllocationMode PassAlignment; + +private: + ImplicitAllocationArguments(Sema &SemaRef, Expr *TypeIdentityArg, + Expr *SizeArg, Expr *AlignArg, + bool IsMSVCCompatibilityFallback); ---------------- ojhunt wrote:
I don't see the value in a default argument for a very small set of callers, all of whom are new. I would rather be explicit and only reluctantly switched to a bool rather than an enum :D I like very explicit code unless I think there's a strong argument to the contrary, and this case didn't seem to warrant the brevity of a default arg. https://github.com/llvm/llvm-project/pull/211482 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
