220 35521 <a341b1ac-049f-4221-9e8c-8d6111f56eb4@isocpp.org> article
Path: news.gmane.org!.POSTED!not-for-mail
From: Todd Fleming <tbfleming@gmail.com>
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: operator[](...)
Date: Sat, 25 Nov 2017 13:09:51 -0800 (PST)
Lines: 158
Approved: news@gmane.org
Message-ID: <a341b1ac-049f-4221-9e8c-8d6111f56eb4@isocpp.org>
References: <ea8aec36-305c-48ca-aedc-0db120fd8fcc@isocpp.org>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: blaine.gmane.org
Mime-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_20342_1573333560.1511644191962"
X-Trace: blaine.gmane.org 1511644195 12217 195.159.176.226 (25 Nov 2017 21:09:55 GMT)
X-Complaints-To: usenet@blaine.gmane.org
NNTP-Posting-Date: Sat, 25 Nov 2017 21:09:55 +0000 (UTC)
To: ISO C++ Standard - Future Proposals <std-proposals@isocpp.org>
Original-X-From: std-proposals+bncBDN5JUVZSIFBBIFY47IAKGQE27TEX3A@isocpp.org Sat Nov 25 22:09:51 2017
Return-path: <std-proposals+bncBDN5JUVZSIFBBIFY47IAKGQE27TEX3A@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-ua0-f199.google.com ([209.85.217.199])
	by blaine.gmane.org with esmtp (Exim 4.84_2)
	(envelope-from <std-proposals+bncBDN5JUVZSIFBBIFY47IAKGQE27TEX3A@isocpp.org>)
	id 1eIhhr-0002bA-2I
	for gclcip-std-proposals@m.gmane.org; Sat, 25 Nov 2017 22:09:47 +0100
Original-Received: by mail-ua0-f199.google.com with SMTP id p9sf12235153uaj.17
        for <gclcip-std-proposals@m.gmane.org>; Sat, 25 Nov 2017 13:09:54 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isocpp-org.20150623.gappssmtp.com; s=20150623;
        h=date:from:to:message-id:in-reply-to:references:subject:mime-version
         :x-original-sender:reply-to:precedence:mailing-list:list-id
         :list-post:list-help:list-archive:list-subscribe:list-unsubscribe;
        bh=KYNJx7bV/uDfrG83SxbSyLILfOHnbXbqgFd7VZAgMTQ=;
        b=hVhWMMfEvcCyDVfcpKCSJNGiiTFGYpLGTxkn5u2Wryf5GDWAeKRlaUN7hiWR900udj
         OEQ51y/qU/q6PshOAKfKx5FHQnV9CMHjKQMsTMV/3uKz8MinSMnRhWvZ+DWHGBVjVtKD
         H/vBoWJ/XWuvp4oELn4sn1jLCy+W2eHxvZp7gF6HZZMO24RY7z5d73Q4PO8gY23giPF8
         wKGpFuqbyMljr8G5gvpx/NovVlyDsi4ktEu/RTEra5VFKk+TKXkaEwzAQAzd3IjSp49N
         qZEYftP0waMB4T+7hM1fodrtaoq0PzLZsGAS/dvg1ZDiyJlsmrPYEOdHzUG1ODHCPgOk
         Nt2A==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20161025;
        h=date:from:to:message-id:in-reply-to:references:subject:mime-version
         :x-original-sender:reply-to:precedence:mailing-list:list-id
         :list-post:list-help:list-archive:list-subscribe:list-unsubscribe;
        bh=KYNJx7bV/uDfrG83SxbSyLILfOHnbXbqgFd7VZAgMTQ=;
        b=BfvVoAEY+XuylusJPrOgd5tYHJfcAgB2rtU/H0P2LoxLwJLy3dL9q7hMB0aDAr9nbU
         H+FK6yTtiqC7cxRrOIZsjzmZ/S21pXnLBbWuon3MiS/gTzPdELeXJkDqBtUBLvWVTfZ0
         2CIEnDk5vNR+C9GejjEpb6ou632Xb2AyJCgbV3lc2nUMpVA/PD/G7WH4TWjSq1eDUEGi
         na/Ip8jQp8jLFEawtMPOaieTjZ9faSPYhiQsWM+sL9bnmk46FJQ30U1w3TdRATfVUEIv
         ioNKXe74oy3imvcbT+iIODmiSxUGrQYPYC+KYaUOI90K/ed/TUfCATfdyl8jy0+QqHvI
         2Drg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20161025;
        h=x-gm-message-state:date:from:to:message-id:in-reply-to:references
         :subject:mime-version:x-original-sender:reply-to:precedence
         :mailing-list:list-id:x-spam-checked-in-group:list-post:list-help
         :list-archive:list-subscribe:list-unsubscribe;
        bh=KYNJx7bV/uDfrG83SxbSyLILfOHnbXbqgFd7VZAgMTQ=;
        b=SAX9Rl/HQX84ccR3Cl0FQsXE7Pu581lC3q2rf71xnCiuVcDv24ZbvY1qS1uJaWJbb9
         sG0pTs3ThY9XnN4f2aaI0tZOQQV0lxtjz/Shp8pQAVqW1KJ68/nWROGgwhqJevquCHAQ
         PNBREVxo2XviL6TX37EDZmp5ndPaokphcJwrdzqlD8EF69MzyfyFxln8ICrzKlf81xzL
         eSL/QX4Ac7dktozsarraga0ZnSgpct5Gw+MqMHkSyLZzri7xCYAnBVzyBvhsQdoSm7vO
         8gRAXvpL41O24GTLkVpcfmngW4OkX2kZ0aH0zt9/QLUGbHW2XlknNXZydKKSbYajSMno
         OWHw==
X-Gm-Message-State: AJaThX7Fk4Q9m4CpsjhOZ/bx5SruJ1K4kIOTY20m664xYmJIm9OlwNlh
	Z47H6A2RvTNxDIgQWBdjsCHHhw==
X-Google-Smtp-Source: AGs4zMZ8/doF9FTh6o8B6ZfBjOaGTn2Raj45hhi7iEiggWEvOvrhNxOb9c4LbZeM+h/y2vFN5Lj7Pw==
X-Received: by 10.31.15.18 with SMTP id 18mr15604133vkp.81.1511644194095;
        Sat, 25 Nov 2017 13:09:54 -0800 (PST)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 10.31.141.197 with SMTP id p188ls2921645vkd.9.gmail; Sat, 25 Nov
 2017 13:09:52 -0800 (PST)
X-Received: by 10.31.14.193 with SMTP id 184mr240509vko.14.1511644192440;
        Sat, 25 Nov 2017 13:09:52 -0800 (PST)
In-Reply-To: <ea8aec36-305c-48ca-aedc-0db120fd8fcc@isocpp.org>
X-Original-Sender: tbfleming@gmail.com
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:35521
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/35521>

------=_Part_20342_1573333560.1511644191962
Content-Type: multipart/alternative; 
	boundary="----=_Part_20343_742255268.1511644191962"

------=_Part_20343_742255268.1511644191962
Content-Type: text/plain; charset="UTF-8"

On Saturday, November 25, 2017 at 2:08:25 PM UTC-5, Ryan Nicholl wrote:
>
>
> My suggestion is to allow overloading operator [] with multiple arguments, 
> e.g.:
>
> class image
> {
>   ...
> public:
>   ...
>
>   pixel & operator[](size_t x, size_t y)
>   {
>     return internal_data[x+y*width];
>   }
> };
>
> /// used like:
>
> image my_image = ...;
> ...
> pixel px = my_image[5, 3];
>
> Would be most useful where I see 
> [{...}]
>
> currently. E.g.:
> output[{x,y}] = value;
> when processing images.
>
>
This conflicts with already valid syntax:

int f(const std::vector<int>& v) {
   return v[5, 3];
}

Todd

-- 
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/a341b1ac-049f-4221-9e8c-8d6111f56eb4%40isocpp.org.

------=_Part_20343_742255268.1511644191962
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">On Saturday, November 25, 2017 at 2:08:25 PM UTC-5, Ryan N=
icholl wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-le=
ft: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr">=
<br>My suggestion is to allow overloading operator [] with multiple argumen=
ts, e.g.:<br><br><div style=3D"background-color:rgb(250,250,250);border-col=
or:rgb(187,187,187);border-style:solid;border-width:1px"><code><div><span s=
tyle=3D"color:#008">class</span><span style=3D"color:#000"> image<br></span=
><span style=3D"color:#660">{</span><span style=3D"color:#000"><br>=C2=A0 <=
/span><span style=3D"color:#660">...</span><span style=3D"color:#000"><br><=
/span><span style=3D"color:#008">public</span><span style=3D"color:#660">:<=
/span><span style=3D"color:#000"><br>=C2=A0 </span><span style=3D"color:#66=
0">...</span><span style=3D"color:#000"><br><br>=C2=A0 pixel </span><span s=
tyle=3D"color:#660">&amp;</span><span style=3D"color:#000"> </span><span st=
yle=3D"color:#008">operator</span><span style=3D"color:#660">[](</span><spa=
n style=3D"color:#000">size_t x</span><span style=3D"color:#660">,</span><s=
pan style=3D"color:#000"> size_t y</span><span style=3D"color:#660">)</span=
><span style=3D"color:#000"><br>=C2=A0 </span><span style=3D"color:#660">{<=
/span><span style=3D"color:#000"><br>=C2=A0 =C2=A0 </span><span style=3D"co=
lor:#008">return</span><span style=3D"color:#000"> internal_data</span><spa=
n style=3D"color:#660">[</span><span style=3D"color:#000">x</span><span sty=
le=3D"color:#660">+</span><span style=3D"color:#000">y</span><span style=3D=
"color:#660">*</span><span style=3D"color:#000">width</span><span style=3D"=
color:#660">];</span><span style=3D"color:#000"><br>=C2=A0 </span><span sty=
le=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 st=
yle=3D"color:#800">/// used like:</span><span style=3D"color:#000"><br><br>=
image my_image </span><span style=3D"color:#660">=3D</span><span style=3D"c=
olor:#000"> </span><span style=3D"color:#660">...;</span><span style=3D"col=
or:#000"><br></span><span style=3D"color:#660">...</span><span style=3D"col=
or:#000"><br>pixel px </span><span style=3D"color:#660">=3D</span><span sty=
le=3D"color:#000"> my_image</span><span style=3D"color:#660">[</span><span =
style=3D"color:#066">5</span><span style=3D"color:#660">,</span><span style=
=3D"color:#000"> </span><span style=3D"color:#066">3</span><span style=3D"c=
olor:#660">];</span><span style=3D"color:#000"><br></span></div></code></di=
v><br>Would be most useful where I see <div style=3D"background-color:rgb(2=
50,250,250);border-color:rgb(187,187,187);border-style:solid;border-width:1=
px"><code><div><span style=3D"color:#660">[{...}]</span></div></code></div>=
<br> currently. E.g.:<br><div style=3D"background-color:rgb(250,250,250);bo=
rder-color:rgb(187,187,187);border-style:solid;border-width:1px"><code><div=
><span style=3D"color:#000">output</span><span style=3D"color:#660">[{</spa=
n><span style=3D"color:#000">x</span><span style=3D"color:#660">,</span><sp=
an style=3D"color:#000">y</span><span style=3D"color:#660">}]</span><span s=
tyle=3D"color:#000"> </span><span style=3D"color:#660">=3D</span><span styl=
e=3D"color:#000"> value</span><span style=3D"color:#660">;</span><span styl=
e=3D"color:#000"><br></span></div></code></div>when processing images.<br><=
br></div></blockquote><div><br></div><div>This conflicts with already valid=
 syntax:</div><div><br></div><div><div class=3D"prettyprint" style=3D"backg=
round-color: rgb(250, 250, 250); border-color: rgb(187, 187, 187); border-s=
tyle: solid; border-width: 1px; word-wrap: break-word;"><code class=3D"pret=
typrint"><div class=3D"subprettyprint"><div style=3D"background-color: rgb(=
255, 255, 254); font-family: &quot;Fira Mono&quot;; font-size: 14px; line-h=
eight: 19px; white-space: pre;"><div style=3D"color: rgb(0, 0, 0);"><span s=
tyle=3D"color: #0000ff;"><span style=3D"color: #008;" class=3D"styled-by-pr=
ettify">int</span></span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"> f</span><span style=3D"color: #660;" class=3D"styled-by-prettify">=
(</span><span style=3D"color: #0000ff;"><span style=3D"color: #008;" class=
=3D"styled-by-prettify">const</span></span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"> std</span><span style=3D"color: #660;" class=3D"=
styled-by-prettify">::</span><span style=3D"color: #000;" class=3D"styled-b=
y-prettify">vector</span><span style=3D"color: #080;" class=3D"styled-by-pr=
ettify">&lt;</span><span style=3D"color: #0000ff;"><span style=3D"color: #0=
80;" class=3D"styled-by-prettify">int</span></span><span style=3D"color: #0=
80;" class=3D"styled-by-prettify">&gt;</span><span style=3D"color: #660;" c=
lass=3D"styled-by-prettify">&amp;</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> v</span><span style=3D"color: #660;" class=3D"styl=
ed-by-prettify">)</span><span style=3D"color: #000;" class=3D"styled-by-pre=
ttify"> </span><span style=3D"color: #660;" class=3D"styled-by-prettify">{<=
/span></div><div style=3D""><span style=3D"color: #000;" class=3D"styled-by=
-prettify"> =C2=A0 =C2=A0</span><span style=3D"color: rgb(0, 0, 255);"><spa=
n style=3D"color: #008;" class=3D"styled-by-prettify">return</span></span><=
span style=3D"color: #000;" class=3D"styled-by-prettify"> v</span><span sty=
le=3D"color: #660;" class=3D"styled-by-prettify">[</span><span style=3D"col=
or: #066;" class=3D"styled-by-prettify">5</span><span style=3D"color: #660;=
" class=3D"styled-by-prettify">,</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> </span><font color=3D"#006666"><span style=3D"colo=
r: #066;" class=3D"styled-by-prettify">3</span></font><span style=3D"color:=
 #660;" class=3D"styled-by-prettify">]</span><span style=3D"color: #660;" c=
lass=3D"styled-by-prettify">;</span></div><div style=3D"color: rgb(0, 0, 0)=
;"><span style=3D"color: #660;" class=3D"styled-by-prettify">}</span></div>=
</div></div></code></div><br>Todd</div><div><br></div></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/a341b1ac-049f-4221-9e8c-8d6111f56eb4%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/a341b1ac-049f-4221-9e8c-8d6111f56eb4=
%40isocpp.org</a>.<br />

------=_Part_20343_742255268.1511644191962--

------=_Part_20342_1573333560.1511644191962--

.
