220 30773 <b1ae66d2-da65-bd04-6ac0-8bed1d13c5c5@wanadoo.fr> article
Path: news.gmane.org!.POSTED!not-for-mail
From: "Vicente J. Botet Escriba" <vicente.botet@wanadoo.fr>
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: Make Typedef Great Again
Date: Sun, 5 Feb 2017 11:41:32 +0100
Lines: 1001
Approved: news@gmane.org
Message-ID: <b1ae66d2-da65-bd04-6ac0-8bed1d13c5c5@wanadoo.fr>
References: <cfbe556f-214a-4245-b257-f746424c63f2@isocpp.org>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: blaine.gmane.org
Mime-Version: 1.0
Content-Type: multipart/alternative;
 boundary="------------5CA4DAA407AE010D0050BCCF"
X-Trace: blaine.gmane.org 1486291295 15527 195.159.176.226 (5 Feb 2017 10:41:35 GMT)
X-Complaints-To: usenet@blaine.gmane.org
NNTP-Posting-Date: Sun, 5 Feb 2017 10:41:35 +0000 (UTC)
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0)
 Gecko/20100101 Thunderbird/45.6.0
To: std-proposals@isocpp.org
Original-X-From: std-proposals+bncBDH67CONY4PBBXUC3TCAKGQE3FLTGUQ@isocpp.org Sun Feb 05 11:41:30 2017
Return-path: <std-proposals+bncBDH67CONY4PBBXUC3TCAKGQE3FLTGUQ@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-lf0-f70.google.com ([209.85.215.70])
	by blaine.gmane.org with esmtp (Exim 4.84_2)
	(envelope-from <std-proposals+bncBDH67CONY4PBBXUC3TCAKGQE3FLTGUQ@isocpp.org>)
	id 1caKGA-0003rA-Cn
	for gclcip-std-proposals@m.gmane.org; Sun, 05 Feb 2017 11:41:30 +0100
Original-Received: by mail-lf0-f70.google.com with SMTP id o12sf23945624lfg.7
        for <gclcip-std-proposals@m.gmane.org>; Sun, 05 Feb 2017 02:41:36 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isocpp-org.20150623.gappssmtp.com; s=20150623;
        h=subject:to:references:from:message-id:date:user-agent:mime-version
         :in-reply-to:x-original-sender:x-original-authentication-results
         :reply-to:precedence:mailing-list:list-id:x-spam-checked-in-group
         :list-post:list-help:list-archive:list-subscribe:list-unsubscribe;
        bh=J+isQSVzQB7eDnSxfEMWShjK+bkZw7CeMLjgNWN2sEw=;
        b=s+cvlpHUtIYpOF26p+S99C8tV0uODlD5oKd3kqKeP5NceEbLPje6sX+gKBkEG6KsMv
         Eb5NEJQA/tUrCLqLPcldsGW0soLl0WMQQIS34M4kOX1mnu1vs6KMpMkD8NAdtakOTD9M
         W9S6+Ezfe83PPT8lPyEoBi+1btOT7SwcW1iIAMx2RI8SeR5ciTpU3wADwHw/qE+UvdcV
         ETYLWHLXGzVswVU2oTbtMBzytViU1vhkHpb6gux9oDy6lqSGxMnOu+cLH7RTG6O//cbt
         pToEe0vJoYm0ixu5xYMjtgD0g7jxNc5IoYHrhhmP7snz25ci0j28hvkBDlNzoDDs+bIQ
         U2IQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20161025;
        h=x-gm-message-state:subject:to:references:from:message-id:date
         :user-agent:mime-version:in-reply-to:x-original-sender
         :x-original-authentication-results:reply-to:precedence:mailing-list
         :list-id:x-spam-checked-in-group:list-post:list-help:list-archive
         :list-subscribe:list-unsubscribe;
        bh=J+isQSVzQB7eDnSxfEMWShjK+bkZw7CeMLjgNWN2sEw=;
        b=sYcjj8czdV+375/OrUb5VgJ1JzJ9lDNh/Rj2ecsnaZNgUqaEgButn0B5wLn0xNz/ri
         NaxKz2OETmeMAli4WSUFUarzEyd/95Hn639IgouIF1KcYlqzLbUAfDwqwJQsxwERwXp5
         AVWIa/XUAwNyrSNUkMQAz1VUhbrCRN6g5/bUuBWm0p2CGOVpvcN8wNqOfaB1iG9ropmL
         w2vixyCTvQ+c32niJVWXdq/pY9IH9AHDBxCOSoNyiJyL83Vq02vsUijVqFxHEz1sGLuw
         zheBt/C3EFKQk6fjOH/iyRslD8YfjxEMdov2qG3btxrvvYCLd5tJLR1yt92Cyrl18UVr
         OJAg==
X-Gm-Message-State: AMke39kJJ/lEQck/npV6tS7p49gXRSmPW6C5Q8FHt35aeVqSfM/q677bb2HN986a7BCXRQ==
X-Received: by 10.25.198.11 with SMTP id w11mr441429lff.5.1486291296127;
        Sun, 05 Feb 2017 02:41:36 -0800 (PST)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 10.28.98.5 with SMTP id w5ls758389wmb.27.canary-gmail; Sun, 05
 Feb 2017 02:41:34 -0800 (PST)
X-Received: by 10.223.135.163 with SMTP id b32mr4913792wrb.184.1486291294675;
        Sun, 05 Feb 2017 02:41:34 -0800 (PST)
Original-Received: from smtp.smtpout.orange.fr (smtp04.smtpout.orange.fr. [80.12.242.126])
        by mx.google.com with ESMTPS id b40si37977044wrb.87.2017.02.05.02.41.34
        for <std-proposals@isocpp.org>
        (version=TLS1 cipher=AES128-SHA bits=128/128);
        Sun, 05 Feb 2017 02:41:34 -0800 (PST)
Received-SPF: neutral (google.com: 80.12.242.126 is neither permitted nor denied by best guess record for domain of vicente.botet@wanadoo.fr) client-ip=80.12.242.126;
Original-Received: from imac-de-vicente-botet-escriba.home ([2.11.72.89])
	by mwinf5d60 with ME
	id gyhY1u0101vahZu03yhZRz; Sun, 05 Feb 2017 11:41:34 +0100
X-ME-Helo: imac-de-vicente-botet-escriba.home
X-ME-Auth: dmljZW50ZS5ib3RldEB3YW5hZG9vLmZy
X-ME-Date: Sun, 05 Feb 2017 11:41:34 +0100
X-ME-IP: 2.11.72.89
In-Reply-To: <cfbe556f-214a-4245-b257-f746424c63f2@isocpp.org>
X-Original-Sender: vicente.botet@wanadoo.fr
X-Original-Authentication-Results: mx.google.com;       spf=neutral
 (google.com: 80.12.242.126 is neither permitted nor denied by best guess
 record for domain of vicente.botet@wanadoo.fr) smtp.mailfrom=vicente.botet@wanadoo.fr
Precedence: list
Mailing-list: list std-proposals@isocpp.org; contact std-proposals+owners@isocpp.org
List-ID: <std-proposals.isocpp.org>
X-Google-Group-Id: 399137483710
List-Post: <https://groups.google.com/a/isocpp.org/group/std-proposals/post>, <mailto:std-proposals@isocpp.org>
List-Help: <https://support.google.com/a/isocpp.org/bin/topic.py?topic=25838>, <mailto:std-proposals+help@isocpp.org>
List-Archive: <https://groups.google.com/a/isocpp.org/group/std-proposals/>
List-Subscribe: <https://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>,
 <mailto:std-proposals+subscribe@isocpp.org>
List-Unsubscribe: <mailto:googlegroups-manage+399137483710+unsubscribe@googlegroups.com>,
 <https://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>
Xref: news.gmane.org gmane.comp.lang.c++.isocpp.proposals:30773
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/30773>

This is a multi-part message in MIME format.
--------------5CA4DAA407AE010D0050BCCF
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable

Le 26/12/2016 =C3=A0 08:38, TONGARI J a =C3=A9crit :
> Typedef declaration is superseded by type alias declaration since=20
> C++11, its legend seems to come to the end. However, we can make=20
> typedef much more useful than it is, by allowing it to be used in=20
> accompany with variable declarations (including parameters and return=20
> types) and base-clause in a class declaration.
>
> The problem
>
> Everyone who loves templates are likely to face a problem - the name=20
> of the type being specified is too long that we don't want to spell it=20
> out twice!
> Although we have type alias, but unfortunately in many cases, it=20
> cannot be used at the first place and we are forced to spell the=20
> irritating names at least twice if we have to refer to the type more=20
> than once.
> Here are some examples:
>
> In function return type:
> |
> template<blahblah...>
> typenameMetaFunc<blahblah...>::type f()
> {
> usingT =3DtypenameMetaFunc<blahblah...>::type;// yuck!
> // Use `T` from now on...
> }
> |
>
> In base-clause:
> |
> template<blahblah...>
> classDerived:publictypenameMetaFunc<blahblah...>::type
> {
> usingBase=3DtypenameMetaFunc<blahblah...>::type;// yuck!
> // Use `Base` from now on...
> }
> |
>
> In parameter list:
> |
> template<blahblah...>
> voidf(SomeTemplate<blahblah...>a,SomeTemplate<blahblah...>b/*yuck!*/);
> |
>
> In deduced type:
> |
> auto&ref=3DgetSomeRef(...);
> usingT =3Dstd::remove_reference_t<decltype(ref)>;// yuck!
> // Use `T` from now on...
> |
>
> Evidence
>
> These discussions on the std-proposals list are also arose from the=20
> same problem:
>
>   * Named base classes
>     <https://groups.google.com/a/isocpp.org/d/topic/std-proposals/TKyHxlc=
--B8/discussion>
>   * decltype(return)
>     <https://groups.google.com/a/isocpp.org/d/topic/std-proposals/sfeZ_rR=
2BvQ/discussion>
>
>
> The solution
>
> The problem comes from the inability to declare the type alias at the=20
> first place, and the solution is gonna to enable it - with the=20
> extended typedef.
>
> In function return type:
> |
> template<blahblah...>
> typedeftypenameMetaFunc<blahblah...>::type T f()// yay!
> {
> // Use `T` from now on...
> }
> |
>
I'm not saying the feature is not needed. I believe however that the=20
proposal needs to compare what it is currently doable.

Couldn't we use the existing language already

|
template<blahblah..., typename T =3D |typenameMetaFunc<blahblah...>::type |=
>
T f()// yay!
{
// Use `T` from now on...
}
|
> In base-clause:
> |
> template<blahblah...>
> classDerived:typedefpublictypenameMetaFunc<blahblah...>::type Base// yay!
> {
> // Use `Base` from now on...
> }
> |
>

|
template<blahblah..., typename Base=3D|typenameMetaFunc<blahblah...>::type|=
>
classDerived:publicBase// yay!
{
// Use `Base` from now on...
}
|

> Note how the occurrence of /access-specifier/ in base-clause differ in=20
> semantic:
> |
> classC :typedefT B // T: private base; B: private typedef
> classC :typedefpublicT B // T: public base; B: private typedef
> classC :publictypedefT B // T: private base; B: public typedef
> classC :publictypedefpublicT B // T: public base; B: public typedef
> |
>
> In parameter list:
> |
> template<blahblah...>
> voidf(typedefSomeTemplate<blahblah...>T a,T b);// yay!
> |
>
I'm not sure the |blahblahcould be inferred

Do tou mean

|
|template<class U>
voidf(U, typedefSomeTemplate<U>T a,T b);

If it is the case

|
||template<class U, class T =3D ||||||SomeTemplate<U>|| >
voidf(U, T a,T b);

See |http://melpon.org/wandbox/permlink/FBlKcQZwxAs5ZJRT

|
> In deduced type:
I have not alternative to this with the current language :(

Vicente

--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/b1ae66d2-da65-bd04-6ac0-8bed1d13c5c5%40wanadoo.f=
r.

--------------5CA4DAA407AE010D0050BCCF
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta content=3D"text/html; charset=3Dutf-8" http-equiv=3D"Content-Type=
">
  </head>
  <body bgcolor=3D"#FFFFFF" text=3D"#000000">
    <div class=3D"moz-cite-prefix">Le 26/12/2016 =C3=A0 08:38, TONGARI J a
      =C3=A9crit=C2=A0:<br>
    </div>
    <blockquote
      cite=3D"mid:cfbe556f-214a-4245-b257-f746424c63f2@isocpp.org"
      type=3D"cite">
      <div dir=3D"ltr">
        <div>Typedef declaration is superseded by type alias declaration
          since C++11, its legend seems to come to the end. However, we
          can make <font face=3D"courier new, monospace">typedef</font>=C2=
=A0much
          more useful than it is, by allowing it to be used in accompany
          with variable declarations (including parameters and return
          types) and base-clause in a class declaration.<br>
        </div>
        <div><br>
        </div>
        <div><font size=3D"6">The problem</font></div>
        <div><br>
        </div>
        <div>Everyone who loves templates are likely to face a problem -
          the name of the type being specified is too long that we don't
          want to spell it out twice!</div>
        <div>Although we have type alias, but unfortunately in many
          cases, it cannot be used at the first place and we are forced
          to spell the irritating names at least twice if we have to
          refer to the type more than once.</div>
        <div>Here are some examples:</div>
        <div><br>
        </div>
        <div>In function return type:</div>
        <div class=3D"prettyprint" style=3D"background-color: rgb(250, 250,
          250); border-color: rgb(187, 187, 187); border-style: solid;
          border-width: 1px; word-wrap: break-word;"><code
            class=3D"prettyprint">
            <div class=3D"subprettyprint"><span style=3D"color: #008;"
                class=3D"styled-by-prettify">template</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify">blahbla=
h</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">...&gt;=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
              </span><span style=3D"color: #008;"
                class=3D"styled-by-prettify">typename</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #606;" class=3D"styled-by-prettify">MetaFun=
c</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify">blahbla=
h</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">...&gt;=
::</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify">type f<=
/span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">()</spa=
n><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
              </span><span style=3D"color: #660;"
                class=3D"styled-by-prettify">{</span><span style=3D"color:
                #000;" class=3D"styled-by-prettify"><br>
                =C2=A0 =C2=A0 </span><span style=3D"color: #008;"
                class=3D"styled-by-prettify">using</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> T </sp=
an><span
                style=3D"color: #660;" class=3D"styled-by-prettify">=3D</sp=
an><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">typenam=
e</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #606;" class=3D"styled-by-prettify">MetaFun=
c</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify">blahbla=
h</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">...&gt;=
::</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify">type</s=
pan><span
                style=3D"color: #660;" class=3D"styled-by-prettify">;</span=
><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #800;" class=3D"styled-by-prettify">// yuck=
!</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
                =C2=A0 =C2=A0 </span><span style=3D"color: #800;"
                class=3D"styled-by-prettify">// Use `T` from now on...</spa=
n><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
              </span><span style=3D"color: #660;"
                class=3D"styled-by-prettify">}</span></div>
          </code></div>
        <div><br>
        </div>
        <div>In base-clause:</div>
        <div class=3D"prettyprint" style=3D"background-color: rgb(250, 250,
          250); border-color: rgb(187, 187, 187); border-style: solid;
          border-width: 1px; word-wrap: break-word;"><code
            class=3D"prettyprint">
            <div class=3D"subprettyprint"><span style=3D"color: #008;"
                class=3D"styled-by-prettify">template</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify">blahbla=
h</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">...&gt;=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
              </span><span style=3D"color: #008;"
                class=3D"styled-by-prettify">class</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #606;" class=3D"styled-by-prettify">Derived=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #660;" class=3D"styled-by-prettify">:</span=
><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">public<=
/span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">typenam=
e</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #606;" class=3D"styled-by-prettify">MetaFun=
c</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify">blahbla=
h</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">...&gt;=
::</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify">type<br=
>
              </span><span style=3D"color: #660;"
                class=3D"styled-by-prettify">{</span><span style=3D"color:
                #000;" class=3D"styled-by-prettify"><br>
                =C2=A0 =C2=A0 </span><span style=3D"color: #008;"
                class=3D"styled-by-prettify">using</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #606;" class=3D"styled-by-prettify">Base</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #660;" class=3D"styled-by-prettify">=3D</sp=
an><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">typenam=
e</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #606;" class=3D"styled-by-prettify">MetaFun=
c</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify">blahbla=
h</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">...&gt;=
::</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify">type</s=
pan><span
                style=3D"color: #660;" class=3D"styled-by-prettify">;</span=
><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #800;" class=3D"styled-by-prettify">// yuck=
!</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
                =C2=A0 =C2=A0 </span><span style=3D"color: #800;"
                class=3D"styled-by-prettify">// Use `Base` from now on...</=
span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
              </span><span style=3D"color: #660;"
                class=3D"styled-by-prettify">}</span></div>
          </code></div>
        <div><br>
        </div>
        <div>In parameter list:</div>
        <div class=3D"prettyprint" style=3D"background-color: rgb(250, 250,
          250); border-color: rgb(187, 187, 187); border-style: solid;
          border-width: 1px; word-wrap: break-word;"><code
            class=3D"prettyprint">
            <div class=3D"subprettyprint"><span style=3D"color: #008;"
                class=3D"styled-by-prettify">template</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify">blahbla=
h</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">...&gt;=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
              </span><span style=3D"color: #008;"
                class=3D"styled-by-prettify">void</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> f</spa=
n><span
                style=3D"color: #660;" class=3D"styled-by-prettify">(</span=
><span
                style=3D"color: #606;" class=3D"styled-by-prettify">SomeTem=
plate</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify">blahbla=
h</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">...&gt;=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> a</spa=
n><span
                style=3D"color: #660;" class=3D"styled-by-prettify">,</span=
><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #606;" class=3D"styled-by-prettify">SomeTem=
plate</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify">blahbla=
h</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">...&gt;=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> b</spa=
n><span
                style=3D"color: #800;" class=3D"styled-by-prettify">/*yuck!=
*/</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">);</spa=
n></div>
          </code></div>
        <div><br>
        </div>
        <div>In deduced type:</div>
        <div class=3D"prettyprint" style=3D"background-color: rgb(250, 250,
          250); border-color: rgb(187, 187, 187); border-style: solid;
          border-width: 1px; word-wrap: break-word;"><code
            class=3D"prettyprint">
            <div class=3D"subprettyprint"><span style=3D"color: #008;"
                class=3D"styled-by-prettify">auto</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&amp;</=
span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">ref</sp=
an><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #660;" class=3D"styled-by-prettify">=3D</sp=
an><span
                style=3D"color: #000;" class=3D"styled-by-prettify">
                getSomeRef</span><span style=3D"color: #660;"
                class=3D"styled-by-prettify">(...);</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
              </span><span style=3D"color: #008;"
                class=3D"styled-by-prettify">using</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> T </sp=
an><span
                style=3D"color: #660;" class=3D"styled-by-prettify">=3D</sp=
an><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> std</s=
pan><span
                style=3D"color: #660;" class=3D"styled-by-prettify">::</spa=
n><span
                style=3D"color: #000;" class=3D"styled-by-prettify">remove_=
reference_t</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #008;" class=3D"styled-by-prettify">decltyp=
e</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">(</span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">ref</sp=
an><span
                style=3D"color: #660;" class=3D"styled-by-prettify">)&gt;;<=
/span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #800;" class=3D"styled-by-prettify">// yuck=
!</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
              </span><span style=3D"color: #800;"
                class=3D"styled-by-prettify">// Use `T` from now on...</spa=
n></div>
          </code></div>
        <div><br>
        </div>
        <div><font size=3D"4">Evidence</font></div>
        <div><font size=3D"4"><br>
          </font></div>
        <div>These discussions on the std-proposals list are also arose
          from the same problem:</div>
        <div>
          <ul>
            <li><a moz-do-not-send=3D"true"
href=3D"https://groups.google.com/a/isocpp.org/d/topic/std-proposals/TKyHxl=
c--B8/discussion">Named
                base classes</a><br>
            </li>
            <li><a moz-do-not-send=3D"true"
href=3D"https://groups.google.com/a/isocpp.org/d/topic/std-proposals/sfeZ_r=
R2BvQ/discussion">decltype(return)</a><br>
            </li>
          </ul>
        </div>
        <div><br>
        </div>
        <div><font size=3D"6">The solution</font></div>
        <div><br>
        </div>
        <div>The problem comes from the inability to declare the type
          alias at the first place, and the solution is gonna to enable
          it - with the extended <font face=3D"courier new, monospace">type=
def</font>.</div>
        <div><br>
        </div>
        <div>In function return type:</div>
        <div class=3D"prettyprint" style=3D"background-color: rgb(250, 250,
          250); border-color: rgb(187, 187, 187); border-style: solid;
          border-width: 1px; word-wrap: break-word;"><code
            class=3D"prettyprint">
            <div class=3D"subprettyprint"><span style=3D"color: #008;"
                class=3D"styled-by-prettify">template</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify">blahbla=
h</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">...&gt;=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
              </span><span style=3D"color: #008;"
                class=3D"styled-by-prettify">typedef</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">typenam=
e</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #606;" class=3D"styled-by-prettify">MetaFun=
c</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify">blahbla=
h</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">...&gt;=
::</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify">type T =
f</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">()</spa=
n><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #800;" class=3D"styled-by-prettify">// yay!=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
              </span><span style=3D"color: #660;"
                class=3D"styled-by-prettify">{</span><span style=3D"color:
                #000;" class=3D"styled-by-prettify"><br>
                =C2=A0 =C2=A0 </span><span style=3D"color: #800;"
                class=3D"styled-by-prettify">// Use `T` from now on...</spa=
n><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
              </span><span style=3D"color: #660;"
                class=3D"styled-by-prettify">}</span></div>
          </code></div>
        <div><br>
        </div>
      </div>
    </blockquote>
    I'm not saying the feature is not needed. I believe however that the
    proposal needs to compare what it is currently doable.<br>
    <br>
    Couldn't we use the existing language already<br>
    <br>
    <div class=3D"prettyprint" style=3D"background-color: rgb(250, 250,
      250); border-color: rgb(187, 187, 187); border-style: solid;
      border-width: 1px; word-wrap: break-word;"><code
        class=3D"prettyprint">
        <div class=3D"subprettyprint"><span style=3D"color: #008;"
            class=3D"styled-by-prettify">template</span><span
            style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</span>=
<span
            style=3D"color: #000;" class=3D"styled-by-prettify">blahblah</s=
pan><span
            style=3D"color: #660;" class=3D"styled-by-prettify">...,
            typename T =3D </span><span style=3D"color: #660;"
            class=3D"styled-by-prettify"><code class=3D"prettyprint"><span
                style=3D"color: #000;" class=3D"styled-by-prettify"></span>=
<span
                style=3D"color: #008;" class=3D"styled-by-prettify">typenam=
e</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #606;" class=3D"styled-by-prettify">MetaFun=
c</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify">blahbla=
h</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">...&gt;=
::</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify">type </=
span></code>&gt;</span><span
            style=3D"color: #000;" class=3D"styled-by-prettify"><br>
          </span><span style=3D"color: #000;" class=3D"styled-by-prettify">=
T
            f</span><span style=3D"color: #660;"
            class=3D"styled-by-prettify">()</span><span style=3D"color:
            #000;" class=3D"styled-by-prettify"> </span><span
            style=3D"color: #800;" class=3D"styled-by-prettify">// yay!</sp=
an><span
            style=3D"color: #000;" class=3D"styled-by-prettify"><br>
          </span><span style=3D"color: #660;" class=3D"styled-by-prettify">=
{</span><span
            style=3D"color: #000;" class=3D"styled-by-prettify"><br>
            =C2=A0 =C2=A0 </span><span style=3D"color: #800;"
            class=3D"styled-by-prettify">// Use `T` from now on...</span><s=
pan
            style=3D"color: #000;" class=3D"styled-by-prettify"><br>
          </span><span style=3D"color: #660;" class=3D"styled-by-prettify">=
}</span></div>
      </code></div>
    <blockquote
      cite=3D"mid:cfbe556f-214a-4245-b257-f746424c63f2@isocpp.org"
      type=3D"cite">
      <div dir=3D"ltr">
        <div>In base-clause:</div>
        <div class=3D"prettyprint" style=3D"background-color: rgb(250, 250,
          250); border-color: rgb(187, 187, 187); border-style: solid;
          border-width: 1px; word-wrap: break-word;"><code
            class=3D"prettyprint">
            <div class=3D"subprettyprint"><span style=3D"color: #008;"
                class=3D"styled-by-prettify">template</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify">blahbla=
h</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">...&gt;=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
              </span><span style=3D"color: #008;"
                class=3D"styled-by-prettify">class</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #606;" class=3D"styled-by-prettify">Derived=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #660;" class=3D"styled-by-prettify">:</span=
><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">typedef=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">public<=
/span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">typenam=
e</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #606;" class=3D"styled-by-prettify">MetaFun=
c</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify">blahbla=
h</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">...&gt;=
::</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify">type </=
span><span
                style=3D"color: #606;" class=3D"styled-by-prettify">Base</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #800;" class=3D"styled-by-prettify">// yay!=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
              </span><span style=3D"color: #660;"
                class=3D"styled-by-prettify">{</span><span style=3D"color:
                #000;" class=3D"styled-by-prettify"><br>
                =C2=A0 =C2=A0 </span><span style=3D"color: #800;"
                class=3D"styled-by-prettify">// Use `Base` from now on...</=
span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
              </span><span style=3D"color: #660;"
                class=3D"styled-by-prettify">}</span></div>
          </code></div>
        <div><br>
        </div>
      </div>
    </blockquote>
    <br>
    <div class=3D"prettyprint" style=3D"background-color: rgb(250, 250,
      250); border-color: rgb(187, 187, 187); border-style: solid;
      border-width: 1px; word-wrap: break-word;"><code
        class=3D"prettyprint">
        <div class=3D"subprettyprint"><span style=3D"color: #008;"
            class=3D"styled-by-prettify">template</span><span
            style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</span>=
<span
            style=3D"color: #000;" class=3D"styled-by-prettify">blahblah</s=
pan><span
            style=3D"color: #660;" class=3D"styled-by-prettify">...,
            typename Base=3D</span><span style=3D"color: #660;"
            class=3D"styled-by-prettify"><code class=3D"prettyprint"><span
                style=3D"color: #000;" class=3D"styled-by-prettify"></span>=
<span
                style=3D"color: #008;" class=3D"styled-by-prettify">typenam=
e</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #606;" class=3D"styled-by-prettify">MetaFun=
c</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify">blahbla=
h</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">...&gt;=
::</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify">type</s=
pan></code>&gt;</span><span
            style=3D"color: #000;" class=3D"styled-by-prettify"><br>
          </span><span style=3D"color: #008;" class=3D"styled-by-prettify">=
class</span><span
            style=3D"color: #000;" class=3D"styled-by-prettify"> </span><sp=
an
            style=3D"color: #606;" class=3D"styled-by-prettify">Derived</sp=
an><span
            style=3D"color: #000;" class=3D"styled-by-prettify"> </span><sp=
an
            style=3D"color: #660;" class=3D"styled-by-prettify">:</span><sp=
an
            style=3D"color: #000;" class=3D"styled-by-prettify"> </span><sp=
an
            style=3D"color: #000;" class=3D"styled-by-prettify"></span><spa=
n
            style=3D"color: #008;" class=3D"styled-by-prettify">public</spa=
n><span
            style=3D"color: #000;" class=3D"styled-by-prettify"> </span><sp=
an
            style=3D"color: #000;" class=3D"styled-by-prettify"></span><spa=
n
            style=3D"color: #606;" class=3D"styled-by-prettify">Base</span>=
<span
            style=3D"color: #000;" class=3D"styled-by-prettify"> </span><sp=
an
            style=3D"color: #800;" class=3D"styled-by-prettify">// yay!</sp=
an><span
            style=3D"color: #000;" class=3D"styled-by-prettify"><br>
          </span><span style=3D"color: #660;" class=3D"styled-by-prettify">=
{</span><span
            style=3D"color: #000;" class=3D"styled-by-prettify"><br>
            =C2=A0 =C2=A0 </span><span style=3D"color: #800;"
            class=3D"styled-by-prettify">// Use `Base` from now on...</span=
><span
            style=3D"color: #000;" class=3D"styled-by-prettify"><br>
          </span><span style=3D"color: #660;" class=3D"styled-by-prettify">=
}</span></div>
      </code></div>
    <div><br>
    </div>
    <blockquote
      cite=3D"mid:cfbe556f-214a-4245-b257-f746424c63f2@isocpp.org"
      type=3D"cite">
      <div dir=3D"ltr">
        <div>Note how the occurrence of <i>access-specifier</i>=C2=A0in
          base-clause differ in semantic:</div>
        <div class=3D"prettyprint" style=3D"background-color: rgb(250, 250,
          250); border-color: rgb(187, 187, 187); border-style: solid;
          border-width: 1px; word-wrap: break-word;"><code
            class=3D"prettyprint">
            <div class=3D"subprettyprint"><span style=3D"color: #008;"
                class=3D"styled-by-prettify">class</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> C </sp=
an><span
                style=3D"color: #660;" class=3D"styled-by-prettify">:</span=
><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">typedef=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> T B </=
span><span
                style=3D"color: #800;" class=3D"styled-by-prettify">// T:
                private base; B: private typedef</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
              </span><span style=3D"color: #008;"
                class=3D"styled-by-prettify">class</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> C </sp=
an><span
                style=3D"color: #660;" class=3D"styled-by-prettify">:</span=
><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">typedef=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">public<=
/span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> T B </=
span><span
                style=3D"color: #800;" class=3D"styled-by-prettify">// T:
                public base; B: private typedef</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
              </span><span style=3D"color: #008;"
                class=3D"styled-by-prettify">class</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> C </sp=
an><span
                style=3D"color: #660;" class=3D"styled-by-prettify">:</span=
><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">public<=
/span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">typedef=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> T B </=
span><span
                style=3D"color: #800;" class=3D"styled-by-prettify">// T:
                private base; B: public typedef</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
              </span><span style=3D"color: #008;"
                class=3D"styled-by-prettify">class</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> C </sp=
an><span
                style=3D"color: #660;" class=3D"styled-by-prettify">:</span=
><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">public<=
/span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">typedef=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">public<=
/span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> T B </=
span><span
                style=3D"color: #800;" class=3D"styled-by-prettify">// T:
                public base; B: public typedef</span></div>
          </code></div>
        <div><br>
        </div>
        <div>In parameter list:</div>
        <div class=3D"prettyprint" style=3D"background-color: rgb(250, 250,
          250); border-color: rgb(187, 187, 187); border-style: solid;
          border-width: 1px; word-wrap: break-word;"><code
            class=3D"prettyprint">
            <div class=3D"subprettyprint"><span style=3D"color: #008;"
                class=3D"styled-by-prettify">template</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify">blahbla=
h</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">...&gt;=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"><br>
              </span><span style=3D"color: #008;"
                class=3D"styled-by-prettify">void</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> f</spa=
n><span
                style=3D"color: #660;" class=3D"styled-by-prettify">(</span=
><span
                style=3D"color: #008;" class=3D"styled-by-prettify">typedef=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #606;" class=3D"styled-by-prettify">SomeTem=
plate</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</s=
pan><span
                style=3D"color: #000;" class=3D"styled-by-prettify">blahbla=
h</span><span
                style=3D"color: #660;" class=3D"styled-by-prettify">...&gt;=
</span><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> T a</s=
pan><span
                style=3D"color: #660;" class=3D"styled-by-prettify">,</span=
><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> T b</s=
pan><span
                style=3D"color: #660;" class=3D"styled-by-prettify">);</spa=
n><span
                style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span
                style=3D"color: #800;" class=3D"styled-by-prettify">// yay!=
</span></div>
          </code></div>
        <div><br>
        </div>
      </div>
    </blockquote>
    I'm not sure the <code class=3D"prettyprint"><span style=3D"color:
        #660;" class=3D"styled-by-prettify"></span><span style=3D"color:
        #000;" class=3D"styled-by-prettify">blahblah</span><span
        style=3D"color: #660;" class=3D"styled-by-prettify"> could be
        inferred<br>
        <br>
        Do tou mean<br>
        <br>
      </span></code><br>
    <code class=3D"prettyprint"><span style=3D"color: #008;"
        class=3D"styled-by-prettify">template</span><span style=3D"color:
        #660;" class=3D"styled-by-prettify">&lt;class U</span><span
        style=3D"color: #660;" class=3D"styled-by-prettify">&gt;</span><spa=
n
        style=3D"color: #000;" class=3D"styled-by-prettify"><br>
      </span><span style=3D"color: #008;" class=3D"styled-by-prettify">void=
</span><span
        style=3D"color: #000;" class=3D"styled-by-prettify"> f</span><span
        style=3D"color: #660;" class=3D"styled-by-prettify">(U, </span><spa=
n
        style=3D"color: #008;" class=3D"styled-by-prettify">typedef</span><=
span
        style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span
        style=3D"color: #606;" class=3D"styled-by-prettify">SomeTemplate</s=
pan><span
        style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</span><spa=
n
        style=3D"color: #000;" class=3D"styled-by-prettify">U</span><span
        style=3D"color: #660;" class=3D"styled-by-prettify">&gt;</span><spa=
n
        style=3D"color: #000;" class=3D"styled-by-prettify"> T a</span><spa=
n
        style=3D"color: #660;" class=3D"styled-by-prettify">,</span><span
        style=3D"color: #000;" class=3D"styled-by-prettify"> T b</span><spa=
n
        style=3D"color: #660;" class=3D"styled-by-prettify">);<br>
        <br>
        If it is the case<br>
        <br>
      </span></code><br>
    <code class=3D"prettyprint"><span style=3D"color: #660;"
        class=3D"styled-by-prettify"><code class=3D"prettyprint"><span
            style=3D"color: #008;" class=3D"styled-by-prettify">template</s=
pan><span
            style=3D"color: #660;" class=3D"styled-by-prettify">&lt;class U=
</span><span
            style=3D"color: #660;" class=3D"styled-by-prettify">, class T =
=3D
          </span></code></span></code><code class=3D"prettyprint"><span
        style=3D"color: #660;" class=3D"styled-by-prettify"><code
          class=3D"prettyprint"><span style=3D"color: #660;"
            class=3D"styled-by-prettify"><code class=3D"prettyprint"><span
                style=3D"color: #660;" class=3D"styled-by-prettify"><code
                  class=3D"prettyprint"><span style=3D"color: #000;"
                    class=3D"styled-by-prettify"></span><span
                    style=3D"color: #606;" class=3D"styled-by-prettify">Som=
eTemplate</span><span
                    style=3D"color: #660;" class=3D"styled-by-prettify">&lt=
;</span><span
                    style=3D"color: #000;" class=3D"styled-by-prettify">U</=
span><span
                    style=3D"color: #660;" class=3D"styled-by-prettify">&gt=
;</span><span
                    style=3D"color: #000;" class=3D"styled-by-prettify"></s=
pan></code></span></code>
            &gt;</span><span style=3D"color: #000;"
            class=3D"styled-by-prettify"><br>
          </span><span style=3D"color: #008;" class=3D"styled-by-prettify">=
void</span><span
            style=3D"color: #000;" class=3D"styled-by-prettify"> f</span><s=
pan
            style=3D"color: #660;" class=3D"styled-by-prettify">(U, </span>=
<span
            style=3D"color: #000;" class=3D"styled-by-prettify">T a</span><=
span
            style=3D"color: #660;" class=3D"styled-by-prettify">,</span><sp=
an
            style=3D"color: #000;" class=3D"styled-by-prettify"> T b</span>=
<span
            style=3D"color: #660;" class=3D"styled-by-prettify">);<br>
            <br>
            See=C2=A0 </span></code><a class=3D"moz-txt-link-freetext" href=
=3D"http://melpon.org/wandbox/permlink/FBlKcQZwxAs5ZJRT">http://melpon.org/=
wandbox/permlink/FBlKcQZwxAs5ZJRT</a><br>
        <br>
      </span></code>
    <blockquote
      cite=3D"mid:cfbe556f-214a-4245-b257-f746424c63f2@isocpp.org"
      type=3D"cite">
      <div dir=3D"ltr">
        <div>In deduced type:</div>
      </div>
    </blockquote>
    I have not alternative to this with the current language :(<br>
    <br>
    Vicente<br>
  </body>
</html>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/b1ae66d2-da65-bd04-6ac0-8bed1d13c5c5%=
40wanadoo.fr?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/b1ae66d2-da65-bd04-6ac0-8bed1d13c5c5=
%40wanadoo.fr</a>.<br />

--------------5CA4DAA407AE010D0050BCCF--

.
