220 38909 <CAANG=kXw2S5myinkSRf=jVCN9=2U3905+TNtMD6JMj3Ge3mMbg@mail.gmail.com> article
Path: news.gmane.org!.POSTED!not-for-mail
From: =?UTF-8?B?R2HFoXBlciBBxb5tYW4=?= <gasper.azman@gmail.com>
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: Re: Allow forward class declarations to match a
 type alias.
Date: Fri, 29 Jun 2018 16:31:05 +0100
Lines: 261
Approved: news@gmane.org
Message-ID: <CAANG=kXw2S5myinkSRf=jVCN9=2U3905+TNtMD6JMj3Ge3mMbg@mail.gmail.com>
References: <b2fb570b-aadb-423e-9821-025cb447cf60@isocpp.org>
 <975ab4cd-2ff0-4a09-9fac-7c37dc67cf16@isocpp.org> <CAPuuy5cZ8ak8M=ujRtqgjSXoPh4+Ot4eALaoy69hU8ZJ-EFtCQ@mail.gmail.com>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: blaine.gmane.org
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="00000000000080b5f3056fc98aa0"
X-Trace: blaine.gmane.org 1530286161 11031 195.159.176.226 (29 Jun 2018 15:29:21 GMT)
X-Complaints-To: usenet@blaine.gmane.org
NNTP-Posting-Date: Fri, 29 Jun 2018 15:29:21 +0000 (UTC)
To: std-proposals@isocpp.org
Original-X-From: std-proposals+bncBDRYVJ6TVYBRBT5B3HMQKGQEN5FSSUI@isocpp.org Fri Jun 29 17:29:16 2018
Return-path: <std-proposals+bncBDRYVJ6TVYBRBT5B3HMQKGQEN5FSSUI@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-lf0-f69.google.com ([209.85.215.69])
	by blaine.gmane.org with esmtp (Exim 4.84_2)
	(envelope-from <std-proposals+bncBDRYVJ6TVYBRBT5B3HMQKGQEN5FSSUI@isocpp.org>)
	id 1fYvKm-0002mO-Fx
	for gclcip-std-proposals@m.gmane.org; Fri, 29 Jun 2018 17:29:16 +0200
Original-Received: by mail-lf0-f69.google.com with SMTP id a131-v6sf2466404lfe.1
        for <gclcip-std-proposals@m.gmane.org>; Fri, 29 Jun 2018 08:31:28 -0700 (PDT)
ARC-Seal: i=2; a=rsa-sha256; t=1530286288; cv=pass;
        d=google.com; s=arc-20160816;
        b=lzaTpZ0o5qWBCwJCOSvKDo2nVHN8Hi3QZC0ptiGfD2dK1Gz+UEY0G9iJggFA+t28tO
         /U1dZeKO79KAR5460KGEfoNA5uJ+nSpsJ5Mq2aVGUgsYncFYsegHWLlmoX6nyuy4Dpzi
         aSHp72dLevdK/qRqgbmjDoPE/q3fbJUj6TYpv1ZfHZjgmZUcq/waOS0bCbeewL7gdS8I
         iLinHmAduQyqkPkZM8LB36MZnAGKK/rUdrZPcCgaOeJcxvZPMFbSg8iCkYioffSgIYPb
         X08KkIAEuym5Spj77E7XgW/hoHOAHGaT4BImx/Qv5h6VXdVolQ9OOv5Coo5lfJe/i8iO
         4FEg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
        h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post
         :list-id:mailing-list:precedence:reply-to:to:subject:message-id:date
         :from:references:in-reply-to:mime-version:arc-authentication-results
         :arc-message-signature:dkim-signature:arc-authentication-results;
        bh=HyK1t0JLaf/1pTPujWl+p8xn1SgJnw2GnfgTg7WOezU=;
        b=JMwGCdFDe82qkdZI8J3qXKB3CmYnqzH1sip+xMc070Iy2D6WVrLtB52JHAvvUk72+j
         O0DvS45tNTbHDbq04y5Tvko9lEbzcqrLympMeHeb3A5471QoA0YfQWpHq/3j6umC+V/b
         z9JRSmPCIEDW5pJsSy3qB53lDFRClTuQWmTTv0iWPJz7XJ0Mma4s7HO1AccZNR5zi70n
         krh4gjqdLZWW5VOjoyH5ycezbMcwQ9mTbAwjxMggKtnhm60ghv2FQ/R6miWzrvBWquBY
         ukTYdUzT/Klqhvhm0nhxccQ9erqmIP6qBOtAwZcCA5P0xJeCO4Z6qvfSDsFpQHkgPCbW
         d6Rw==
ARC-Authentication-Results: i=2; mx.google.com;
       dkim=pass header.i=@gmail.com header.s=20161025 header.b=F8ccPboB;
       spf=pass (google.com: domain of gasper.azman@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=gasper.azman@gmail.com;
       dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isocpp-org.20150623.gappssmtp.com; s=20150623;
        h=mime-version:in-reply-to:references:from:date:message-id:subject:to
         :x-original-sender:x-original-authentication-results:reply-to
         :precedence:mailing-list:list-id:list-post:list-help:list-archive
         :list-subscribe:list-unsubscribe;
        bh=HyK1t0JLaf/1pTPujWl+p8xn1SgJnw2GnfgTg7WOezU=;
        b=xICK9q4oghUNzkPcfzgTvUp/5xwRkxGFRMLQGGNUUyUboXVkKpF/D45RhVfjG46QMl
         E35ylM8ZUMEiQ+AlMl9ORzgSd0jDfkEtkwca1dbl3E2937nw2A2U8cCmMub89KCFT+fr
         egsU912vNKhJk5DVLTlEHlSQznd6qLDaqtohElxi/x1ADFg4aDt9u6Z4xkmQXOAvAwCk
         t80X3ZnNTn1dXsT1frt80PIq0jx2CG1s0v+mHfkNtH1iH8RcXnz+yrClx1AzGo24icq8
         pWxekHO+aqBrZSX7+jOcT4nHzfdVWSQ/SooENy5VxWAOEiAXEio59JAhudI1mV0K5Wbq
         Qvmw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20161025;
        h=x-gm-message-state:mime-version:in-reply-to:references:from:date
         :message-id:subject: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=HyK1t0JLaf/1pTPujWl+p8xn1SgJnw2GnfgTg7WOezU=;
        b=T7f21N8ARhWGAofqEvwE51X2oFFkSwxFQFNaw+WSo/QBgK49CLKJSii/+fJ5Wp46K3
         puWWG+HVloHAkw3/qJTnPa6hPxJ8Ct1ccJPmbibE3SDWqkd6Wy4WjB/SMr4e5AhIhg8U
         pBimIa4MQKmSaetKYL6OJ/+MaHV8/TjkwQwFNk4xBMK9IuMUYkxC+5EB8X3A6uMOt31v
         biy2cvAIqcRg5z5dogShTMJ3qbd5WXCZ8+xGSvUn9GwIQ3X45GgrvfgH4ArOXV1DtX+X
         NuU56ZYG5dN2MqpXlPeTFc4tsAORUv0KnbJeA0iIYrTUnlMrt3GD47DauCRIvcycPD8+
         6dlg==
X-Gm-Message-State: APt69E2RFA3RDh1xV4YHi4RcCR4pEjnMqKsUXcPivF3ULOoVb4fU2X7S
	XBgXHBVgDP5wqhSTIEuGV+VfyA==
X-Google-Smtp-Source: AAOMgpdqh++4uZhk/tkdR6CgGYJyRcpH0/jyu5wUT2OpBnIalbqzSQptfgPxPfJcD+sZXBC2SQkDmw==
X-Received: by 2002:a19:9384:: with SMTP id w4-v6mr136604lfk.8.1530286288110;
        Fri, 29 Jun 2018 08:31:28 -0700 (PDT)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 2002:a2e:88cf:: with SMTP id a15-v6ls1425778ljk.16.gmail; Fri, 29
 Jun 2018 08:31:26 -0700 (PDT)
X-Received: by 2002:a2e:90c5:: with SMTP id o5-v6mr10156198ljg.15.1530286286816;
        Fri, 29 Jun 2018 08:31:26 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1530286286; cv=none;
        d=google.com; s=arc-20160816;
        b=Vtfae00CDduQnJA0yL3ctvMmrIPYbYr/G5zQbst61Z3dvz/4316/Z9pDXutt+vYJ7C
         lytC1k2Uzi7sw1O49lB1URe7FaS6TXN+979wjUlJ27ebtdX5Z9sNO2CQzK1U0ndTgid7
         2dUU9ccPHKgMZrz+/Ote97iFjK6WG6U9yJAHxgwPZsBO5Qf/O/ioKQuZCJTxye3TVDO5
         AVBK8YVyiYf29kMnK4PVrIuV8q3k+G7rsb+/LjAUVdp/uI4X3o5fc76beqmpbKp+KFzi
         SVzcJuIV9m6qoJOtTaP6WxUAWHRbTu2+/PtDFOhfm0WIhJuo6T+jWieYErz1NDhh4Ni/
         eJRA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
        h=to:subject:message-id:date:from:references:in-reply-to:mime-version
         :dkim-signature:arc-authentication-results;
        bh=1w2WatZ5sj60Vnx3yFcspD5nlM5PeqWK6xVbXrcqopM=;
        b=Au+lZI8vgLdqPeuXBzq/rc+uI8hx0DKAu4ZvDT8gBMsYKuquPPUp8ojEMVXQvYeAN3
         +D9IbCeChY7d+Di+Ha6VYQgfnlAx00/60ra06V1izK6FaabzkgfaVWpq5IRVXLvpyMXr
         qnSN+KmGE+P+l/n1ItJa6i6Ob+OKPnb4Ri/SGOCdYtNDJ38awctoRB2LVvOiQbfmgCBb
         oWAaK4ziQp9C4j3q2vvUHOI16yg4awOFpijKIYsIe+ONYx1gP+5DBPUxUibASGpsxLFL
         E3pizPjsOZpdiDuZaC8i9dj1x9nAIEy6Ykpzq343kDyxiMIpjbZvlj/ywzeteHgKbVaw
         TReg==
ARC-Authentication-Results: i=1; mx.google.com;
       dkim=pass header.i=@gmail.com header.s=20161025 header.b=F8ccPboB;
       spf=pass (google.com: domain of gasper.azman@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=gasper.azman@gmail.com;
       dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com
Original-Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41])
        by mx.google.com with SMTPS id g88-v6sor1219989ljg.64.2018.06.29.08.31.26
        for <std-proposals@isocpp.org>
        (Google Transport Security);
        Fri, 29 Jun 2018 08:31:26 -0700 (PDT)
Received-SPF: pass (google.com: domain of gasper.azman@gmail.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41;
X-Received: by 2002:a2e:2b0e:: with SMTP id q14-v6mr9028717lje.147.1530286286352;
 Fri, 29 Jun 2018 08:31:26 -0700 (PDT)
Original-Received: by 2002:ab3:404:0:0:0:0:0 with HTTP; Fri, 29 Jun 2018 08:31:05 -0700 (PDT)
In-Reply-To: <CAPuuy5cZ8ak8M=ujRtqgjSXoPh4+Ot4eALaoy69hU8ZJ-EFtCQ@mail.gmail.com>
X-Original-Sender: gasper.azman@gmail.com
X-Original-Authentication-Results: mx.google.com;       dkim=pass
 header.i=@gmail.com header.s=20161025 header.b=F8ccPboB;       spf=pass
 (google.com: domain of gasper.azman@gmail.com designates 209.85.220.41 as
 permitted sender) smtp.mailfrom=gasper.azman@gmail.com;       dmarc=pass
 (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com
Precedence: list
Mailing-list: list std-proposals@isocpp.org; contact std-proposals+owners@isocpp.org
List-ID: <std-proposals.isocpp.org>
X-Spam-Checked-In-Group: 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:38909
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/38909>

--00000000000080b5f3056fc98aa0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

AFAIK it's not possible because a using declaration is not a linkable
symbol - you need to know the actual type name in order to mangle things.

Then again perhaps you can skirt this by just not using it anywhere you'd
actually need a symbol.

G

On Fri, Jun 29, 2018 at 4:28 PM, Justin Bassett <jbassett271@gmail.com>
wrote:

> I would extend it and say you can forward declare an arbitrary type, like
> in this thread: https://groups.google.com/a/isocpp.org/forum/#!msg/
> std-proposals/fm-ThgXXjF4/fukkKkh8Xh0J;context-place=3Dforum/std-proposal=
s
>
> As much as I want universal forward declarations, I remember seeing that
> it can't be done, since some pointers can have different representations =
/
> sizes. It mightve been something like void* or char* could be bigger and
> are on certain systems. I couldn't find a link to back this up, though
>
> On Fri, Jun 29, 2018, 1:48 AM <mihailnajdenov@gmail.com> wrote:
>
>> We have to see what is the situation after Modules.
>>
>> For now your best bet is to actually create a class
>> class FloatImage : public CudaImage<float> { /*using =E2=80=A6*/ };
>>
>>
>> On Friday, June 29, 2018 at 10:56:26 AM UTC+3, Bengt Gustafsson wrote:
>>>
>>> A forward declaration of a class name is currently not allowed to be
>>> resolved by a type alias of a class template. I don't see the logic to
>>> this, why is this illegal:
>>>
>>> // forward declaration in one header file.
>>> class FloatImage;
>>>
>>>
>>> // Definition in another header file.
>>> template<typename T> class CudaImage {
>>> };
>>>
>>> using FloatImage =3D CudaImage<float>;
>>>
>>>
>>> Godbolt: https://godbolt.org/g/mmTTeQ shows that all compilers reject
>>> this.
>>>
>>> This has  created a fair amount of trouble for me when trying to
>>> refactor what was previously a FloatImage class to a generic pixel type
>>> template. I don't see the logic to making this
>>> illegal as FloatImage is still the name of a class, i.e. an instance of
>>> the CudaImage class template.
>>>
>>> While I can update the forward declaration to:
>>> // forward declaration in one header file.
>>> template<typename T> class CudaImage;
>>> using FloatImage =3D CudaImage<float>;
>>>
>>> This seems to be an unnecessary leakage of implementation detail.
>>>
>>> so is there a technical reason preventing this from being allowed or is
>>> it just an oversight that could be corrected?
>>>
>>> --
>> You received this message because you are subscribed to the Google Group=
s
>> "ISO C++ Standard - Future Proposals" group.
>> To unsubscribe from this group and stop receiving emails from it, send a=
n
>> email 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/975ab4cd-2ff0-4a09-
>> 9fac-7c37dc67cf16%40isocpp.org
>> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/975ab4cd-2=
ff0-4a09-9fac-7c37dc67cf16%40isocpp.org?utm_medium=3Demail&utm_source=3Dfoo=
ter>
>> .
>>
> --
> 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
> email 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/CAPuuy5cZ8ak8M%3DujRtqgjSXoPh4%
> 2BOt4eALaoy69hU8ZJ-EFtCQ%40mail.gmail.com
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAPuuy5cZ8a=
k8M%3DujRtqgjSXoPh4%2BOt4eALaoy69hU8ZJ-EFtCQ%40mail.gmail.com?utm_medium=3D=
email&utm_source=3Dfooter>
> .
>

--=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/CAANG%3DkXw2S5myinkSRf%3DjVCN9%3D2U3905%2BTNtMD6=
JMj3Ge3mMbg%40mail.gmail.com.

--00000000000080b5f3056fc98aa0
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">AFAIK it&#39;s not possible because a using declaration is=
 not a linkable symbol - you need to know the actual type name in order to =
mangle things.<div><br></div><div>Then again perhaps you can skirt this by =
just not using it anywhere you&#39;d actually need a symbol.</div><div><br>=
</div><div>G</div></div><div class=3D"gmail_extra"><br><div class=3D"gmail_=
quote">On Fri, Jun 29, 2018 at 4:28 PM, Justin Bassett <span dir=3D"ltr">&l=
t;<a href=3D"mailto:jbassett271@gmail.com" target=3D"_blank">jbassett271@gm=
ail.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D=
"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D=
"auto">I would extend it and say you can forward declare an arbitrary type,=
 like in this thread:=C2=A0<a href=3D"https://groups.google.com/a/isocpp.or=
g/forum/#!msg/std-proposals/fm-ThgXXjF4/fukkKkh8Xh0J;context-place=3Dforum/=
std-proposals" target=3D"_blank">https://groups.google.<wbr>com/a/isocpp.or=
g/forum/#!msg/<wbr>std-proposals/fm-ThgXXjF4/<wbr>fukkKkh8Xh0J;context-plac=
e=3D<wbr>forum/std-proposals</a><div dir=3D"auto"><br></div><div dir=3D"aut=
o">As much as I want universal forward declarations, I remember seeing that=
 it can&#39;t be done, since some pointers can have different representatio=
ns / sizes. It mightve been something like void* or char* could be bigger a=
nd are on certain systems. I couldn&#39;t find a link to back this up, thou=
gh</div></div><div><div class=3D"h5"><br><div class=3D"gmail_quote"><div di=
r=3D"ltr">On Fri, Jun 29, 2018, 1:48 AM  &lt;<a href=3D"mailto:mihailnajden=
ov@gmail.com" target=3D"_blank">mihailnajdenov@gmail.com</a>&gt; wrote:<br>=
</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-l=
eft:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr"><div>We have to see w=
hat is the situation after Modules.=C2=A0</div><div><br></div><div>For now =
your best bet is to actually create a class=C2=A0<span><br style=3D"border-=
bottom-color:rgb(0,0,0);border-bottom-style:none;border-bottom-width:0px;bo=
rder-left-color:rgb(0,0,0);border-left-style:none;border-left-width:0px;bor=
der-right-color:rgb(0,0,0);border-right-style:none;border-right-width:0px;b=
order-top-color:rgb(0,0,0);border-top-style:none;border-top-width:0px;margi=
n-bottom:0px;margin-left:0px;margin-right:0px;margin-top:0px;padding-bottom=
:0px;padding-left:0px;padding-right:0px;padding-top:0px"></span><font face=
=3D"courier new,monospace">class FloatImage : public CudaImage&lt;float&gt;=
 { /*using =E2=80=A6*/ };</font></div><div><b></b><i></i><u></u><sub></sub>=
<sup></sup><strike></strike><font face=3D"courier new,monospace"></font><br=
></div><div><br></div>On Friday, June 29, 2018 at 10:56:26 AM UTC+3, Bengt =
Gustafsson wrote:<blockquote class=3D"gmail_quote" style=3D"margin:0;margin=
-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr">A=
 forward declaration of a class name is currently not allowed to be resolve=
d by a type alias of a class template. I don&#39;t see the logic to this, w=
hy is this illegal:<div><br></div><div><div><div><div style=3D"background-c=
olor:rgb(250,250,250);border-color:rgb(187,187,187);border-style:solid;bord=
er-width:1px;word-wrap:break-word"><code><div><span style=3D"color:#800">//=
 forward declaration in one header file.</span><span style=3D"color:#000"><=
br></span><span style=3D"color:#008">class</span><span style=3D"color:#000"=
> </span><span style=3D"color:#606">FloatImage</span><span style=3D"color:#=
660">;</span><span style=3D"color:#000"><br><br><br></span><span style=3D"c=
olor:#800">// Definition in another header file.</span><span style=3D"color=
:#000"><br></span><span style=3D"color:#008">template</span><span style=3D"=
color:#660">&lt;</span><span style=3D"color:#008">typename</span><span styl=
e=3D"color:#000"> T</span><span style=3D"color:#660">&gt;</span><span style=
=3D"color:#000"> </span><span style=3D"color:#008">class</span><span style=
=3D"color:#000"> </span><span style=3D"color:#606">CudaImage</span><span st=
yle=3D"color:#000"> </span><span style=3D"color:#660">{</span><span style=
=3D"color:#000"><br></span><span style=3D"color:#660">};</span><span style=
=3D"color:#000"><br><br></span><span style=3D"color:#008">using</span><span=
 style=3D"color:#000"> </span><span style=3D"color:#606">FloatImage</span><=
span style=3D"color:#000"> </span><span style=3D"color:#660">=3D</span><spa=
n style=3D"color:#000"> </span><span style=3D"color:#606">CudaImage</span><=
span style=3D"color:#080">&lt;float&gt;</span><span style=3D"color:#660">;<=
/span><span style=3D"color:#000"><br></span></div></code></div><br><br>Godb=
olt:=C2=A0<a href=3D"https://godbolt.org/g/mmTTeQ" rel=3D"nofollow noreferr=
er" target=3D"_blank">https://godbolt.org/<wbr>g/mmTTeQ</a> shows that all =
compilers reject this.</div><div><br></div><div>This has=C2=A0 created a fa=
ir amount of trouble for me when trying to refactor what was previously a F=
loatImage class to a generic pixel type template. I don&#39;t see the logic=
 to making this</div><div>illegal as FloatImage is still the name of a clas=
s, i.e. an instance of the CudaImage class template.</div><div><br></div><d=
iv>While I can update the forward declaration to:</div><div style=3D"backgr=
ound-color:rgb(250,250,250);border-color:rgb(187,187,187);border-style:soli=
d;border-width:1px;word-wrap:break-word"><code><div><span style=3D"color:#8=
00">// forward declaration in one header file.</span><span style=3D"color:#=
000"><br></span><span style=3D"color:#008">template</span><span style=3D"co=
lor:#660">&lt;</span><span style=3D"color:#008">typename</span><span style=
=3D"color:#000"> T</span><span style=3D"color:#660">&gt;</span><span style=
=3D"color:#000"> </span><span style=3D"color:#008">class</span><span style=
=3D"color:#000"> </span><span style=3D"color:#606">CudaImage</span><span st=
yle=3D"color:#660">;</span><span style=3D"color:#000"><br></span><span styl=
e=3D"color:#008">using</span><span style=3D"color:#000"> </span><span style=
=3D"color:#606">FloatImage</span><span style=3D"color:#000"> </span><span s=
tyle=3D"color:#660">=3D</span><span style=3D"color:#000"> </span><span styl=
e=3D"color:#606">CudaImage</span><span style=3D"color:#080">&lt;float&gt;</=
span><span style=3D"color:#660">;</span><span style=3D"color:#000"><br></sp=
an></div></code></div><div><div><br>This seems to be an unnecessary leakage=
 of implementation detail.</div><div><br></div><div>so is there a technical=
 reason preventing this from being allowed or is it just an oversight that =
could be corrected?</div><div><br></div></div></div></div></div></blockquot=
e></div>

<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" rel=3D"nore=
ferrer" target=3D"_blank">std-proposals+unsubscribe@<wbr>isocpp.org</a>.<br=
>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" rel=3D"noreferrer" target=3D"_blank">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/975ab4cd-2ff0-4a09-9fac-7c37dc67cf16%=
40isocpp.org?utm_medium=3Demail&amp;utm_source=3Dfooter" rel=3D"noreferrer"=
 target=3D"_blank">https://groups.google.com/a/<wbr>isocpp.org/d/msgid/std-=
<wbr>proposals/975ab4cd-2ff0-4a09-<wbr>9fac-7c37dc67cf16%40isocpp.org</a><w=
br>.<br>
</blockquote></div>

<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" target=3D"_=
blank">std-proposals+unsubscribe@<wbr>isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" target=3D"_blank">std-proposals@isocpp.org</a>.<br></div></div>
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/CAPuuy5cZ8ak8M%3DujRtqgjSXoPh4%2BOt4e=
ALaoy69hU8ZJ-EFtCQ%40mail.gmail.com?utm_medium=3Demail&amp;utm_source=3Dfoo=
ter" target=3D"_blank">https://groups.google.com/a/<wbr>isocpp.org/d/msgid/=
std-<wbr>proposals/CAPuuy5cZ8ak8M%<wbr>3DujRtqgjSXoPh4%<wbr>2BOt4eALaoy69hU=
8ZJ-EFtCQ%<wbr>40mail.gmail.com</a>.<br>
</blockquote></div><br></div>

<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/CAANG%3DkXw2S5myinkSRf%3DjVCN9%3D2U39=
05%2BTNtMD6JMj3Ge3mMbg%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfoo=
ter">https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAANG%3Dk=
Xw2S5myinkSRf%3DjVCN9%3D2U3905%2BTNtMD6JMj3Ge3mMbg%40mail.gmail.com</a>.<br=
 />

--00000000000080b5f3056fc98aa0--

.
