Title
Value-dependency via injected-class-name
Status
c++17
Section
13.8.3.2 [temp.dep.type]
Submitter
Maxim Kartashev

Created on 2015-06-16.00:00:00 last changed 75 months ago

Messages

Date: 2016-11-15.00:00:00

[Moved to DR at the November, 2016 meeting.]

Date: 2016-03-15.00:00:00

Proposed resolution (March, 2016):

Change 13.8.3.2 [temp.dep.type] bullet 9.7 as follows:

A type is dependent if it is

  • ...

  • a simple-template-id in which either the template name is a template parameter or any of the template arguments is a dependent type or an expression that is type-dependent or value-dependent or is a pack expansion [Note: This includes an injected-class-name (Clause 11 [class]) of a class template used without a template-argument-list. —end note], or

  • denoted by...

Date: 2016-02-15.00:00:00

Proposed resolution (February, 2016) [SUPERSEDED]:

Change 13.8.3.2 [temp.dep.type] bullet 9.7 as follows:

A type is dependent if it is

  • ...

  • an injected-type-name ( Clause 11 [class]) of a class template or a simple-template-id in which either the template name is a template parameter or any of the template arguments is a dependent type or an expression that is type-dependent or value-dependent or is a pack expansion, or

  • denoted by...

Date: 2015-06-16.00:00:00

There does not appear to be a rule that causes p or this to be dependent in the following example:

  template <typename T> struct A {
     void foo() {
        A* p = 0;
        bar(p);    // will be found by ADL at the point of instantiation
        bar(this); // same here
     }
  };

  void bar(...);

  int main() {
     A<int> a;
     a.foo();
  }
History
Date User Action Args
2018-02-27 00:00:00adminsetmessages: + msg6168
2018-02-27 00:00:00adminsetstatus: dr -> c++17
2017-02-06 00:00:00adminsetmessages: + msg6093
2017-02-06 00:00:00adminsetstatus: tentatively ready -> dr
2016-02-15 00:00:00adminsetmessages: + msg5709
2016-02-15 00:00:00adminsetstatus: drafting -> tentatively ready
2015-06-16 00:00:00admincreate