Title
Alias template specialization in template member definition
Status
drafting
Section
13.7.8 [temp.alias]
Submitter
Gabriel Dos Reis

Created on 2014-07-31.00:00:00 last changed 115 months ago

Messages

Date: 2015-05-15.00:00:00

Notes from the May, 2015 meeting:

CWG felt that this kind of usage should be permitted only via a “simple” alias, in which the SFINAE is the same as the template to which it refers and all the template parameters are used. See also issue 1286.

Date: 2014-07-31.00:00:00

In an example like

  template<typename T> struct A {
    struct B {
      void f();
    };
  };

  template<typename T> using X = typename A<T>::B;

  template<typename T> void X<T>::f() { }       // #1

should #1 be considered a definition of A<T>::B::f()?

Analogy with alias-declarations would suggest that it should, but alias template specializations involve issues like SFINAE on unused template parameters (see issue 1558) and possibly other complications.

(See also issues 1980, 2021, 2025, and 2037.)

History
Date User Action Args
2015-05-25 00:00:00adminsetmessages: + msg5524
2015-05-25 00:00:00adminsetstatus: open -> drafting
2014-07-31 00:00:00admincreate