[PATCH] D91641: [CMake] Fix ExtensionDependencies.inc with multiple extensions

serge via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 17 22:05:18 PST 2020


serge-sans-paille added a comment.

In D91641#2401024 <https://reviews.llvm.org/D91641#2401024>, @Meinersbur wrote:

> There seems to be one set of braces too much, makes me wonder how it ever worked.

The « extra » set of brace was for list initialization, using that rule (from https://en.cppreference.com/w/cpp/language/list_initialization)

>   Otherwise, the constructors of T are considered, in two phases: 
>   
>       All constructors that take std::initializer_list as the only argument, or as the first argument if the remaining arguments have default values, are examined, and matched by overload resolution against a single argument of type std::initializer_list 
>   
>      If the previous stage does not produce a match, all constructors of T participate in overload resolution against the set of arguments that consists of the elements of the braced-init-list, with the restriction that only non-narrowing conversions are allowed. If this stage produces an explicit constructor  as the best match for a copy-list-initialization, compilation fails (note, in simple copy-initialization, explicit constructors are not considered at all). 

Anyway, explicit is better than implicit, so this diff is definitively fine :-)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D91641/new/

https://reviews.llvm.org/D91641



More information about the llvm-commits mailing list