[PATCH] D65696: Implements CWG 2082 Referring to parameters in unevaluated operands of default arguments

Mark de Wever via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Sun Aug 4 10:05:31 PDT 2019


Mordante marked 2 inline comments as done.
Mordante added inline comments.


================
Comment at: clang/lib/Sema/SemaDeclCXX.cpp:103-105
+      //   A local variable cannot be odr-used (6.2) in a default argument.
+      if (DRE->isNonOdrUse() != NOUR_None)
+        return false;
----------------
rsmith wrote:
> Please add tests for the distinction between "potentially-evaluated" and "odr-used" here, for example:
> 
> ```
> void f() {
>   const int n = 123;
>   void g(int k = n); // ok, not an odr-use
> }
> ```
I added the test but unfortunately clang disagrees with you and considers `n` ODR used. 
I'll have look how to teach clang `n` is not ODR used.


================
Comment at: clang/www/cxx_dr_status.html:3
           "http://www.w3.org/TR/html4/strict.dtd">
 <!-- This file is auto-generated by make_cxx_dr_status. Do not modify. -->
 <html>
----------------
rsmith wrote:
> Note that this is an auto-generated file. To update it, you need to add a test to the relevant file (`test/CXX/drs/dr20xx.cpp`) with a suitable comment (`// dr2082: 10` to mark this implemented in Clang 10), grab a recent `cwg_index.html` file, and run the `make_cxx_dr_status` script.
Thanks for the info, I'll have a look at it after I fix the ODR used part.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D65696





More information about the cfe-commits mailing list