Topic: Mapping enum to multilanguage strings


Author: Mariusz Moczala <mmoczala@gmail.com>
Date: Tue, 26 Jul 2016 10:03:31 -0700 (PDT)
Raw View
------=_Part_320_1318306024.1469552611556
Content-Type: multipart/alternative;
 boundary="----=_Part_321_426734428.1469552611562"

------=_Part_321_426734428.1469552611562
Content-Type: text/plain; charset=UTF-8

Hello everyone,

Could you tell me please what do you think about the C++ language extension
described in blue comment below?
Is something similar already available in some version of C++?

Many thanks,
Mariusz


*enum class* Translation {
  menuFile,
  menuFileNew,
  menuFileOpen,
  menuFileSave,
  menuFileSaveAs,

  // ...
};

*const char* *translationEnUs[Translation] = { // Reading from enum type
returns maximal value held by the enum (4 in this case)
  Translation::menuFile : "&File",
  Translation::menuFileNew : "&New",         // This is a special syntax,
that does not require to use ordered keys (indices)
  Translation::menuFileOpen : "&Open...",
  Translation::menuFileSave : "&Save",
  Translation::menuFileSaveAs : "S&ave as...",

  // ...
};

*const char* *translationPlPl[Translation] = {
  [Translation::menuFile] = "&Plik",
  [Translation::menuFileNew] = "&Nowy",      // Or maybe this way is more
in C++ style?
  [Translation::menuFileOpen] = "&Otworz...",
  [Translation::menuFileSave] = "&Zapisz",
  [Translation::menuFileSaveAs] = "Z&apisz jako...",

  // ...
};

// ...

*enum class* Language {
  enUs,
  plPl,

  // ...
};

*const char* **translations[Language] = {
  translationEnUs,
  translationPlPl,

  // ...
};

// ...

Language language = Language::enUs;

// ...

*int* languageId = *static_cast*<*int*>(language);
*int* translationId = *static_cast*<*int*>(Translation::menuFileNew);
*const char* *text = translations[languageId][translationId];
menuFileNew.setText(text);

--
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/0f801531-bfdb-49b5-a8f5-d5ffffbfcfc7%40isocpp.org.

------=_Part_321_426734428.1469552611562
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Hello everyone,</div><div><br></div><div>Could you te=
ll me please what do you think about the C++ language extension described i=
n <font color=3D"#0000ff">blue </font>comment below?</div><div>Is something=
 similar already available in some version of C++?</div><div><br></div><div=
>Many thanks,</div><div>Mariusz</div><div><br></div><div><br></div><div><fo=
nt face=3D"courier new, monospace"><b>enum class</b> Translation {<br></fon=
t></div><div><font face=3D"courier new, monospace">=C2=A0 menuFile,</font><=
/div><div><font face=3D"courier new, monospace">=C2=A0 menuFileNew,</font><=
/div><div><font face=3D"courier new, monospace">=C2=A0 menuFileOpen,</font>=
</div><div><font face=3D"courier new, monospace">=C2=A0 menuFileSave,</font=
></div><div><font face=3D"courier new, monospace">=C2=A0 menuFileSaveAs,</f=
ont></div><div><font face=3D"courier new, monospace"><br></font></div><div>=
<font face=3D"courier new, monospace">=C2=A0 // ...</font></div><div><font =
face=3D"courier new, monospace">};</font></div><div><font face=3D"courier n=
ew, monospace"><br></font></div><div><font face=3D"courier new, monospace">=
<b>const char</b> *translationEnUs[Translation] =3D { <font color=3D"#0000f=
f">// Reading from enum type returns maximal value held by the enum (4 in t=
his case)</font></font></div><div><font face=3D"courier new, monospace">=C2=
=A0 Translation::menuFile : &quot;&amp;File&quot;,</font></div><div><font f=
ace=3D"courier new, monospace">=C2=A0 Translation::menuFileNew : &quot;&amp=
;New&quot;, =C2=A0 =C2=A0 =C2=A0 =C2=A0 <font color=3D"#0000ff">// This is =
a special syntax, that does not require to use ordered keys (indices)</font=
></font></div><div><font face=3D"courier new, monospace">=C2=A0 Translation=
::menuFileOpen : &quot;&amp;Open...&quot;,</font></div><div><font face=3D"c=
ourier new, monospace">=C2=A0 Translation::menuFileSave : &quot;&amp;Save&q=
uot;,</font></div><div><font face=3D"courier new, monospace">=C2=A0 Transla=
tion::menuFileSaveAs : &quot;S&amp;ave as...&quot;,</font></div><div><font =
face=3D"courier new, monospace"><br></font></div><div><font face=3D"courier=
 new, monospace">=C2=A0 // ...</font></div><div><font face=3D"courier new, =
monospace">};</font></div><div><font face=3D"courier new, monospace"><br></=
font></div><div><font face=3D"courier new, monospace"><b>const char</b> *tr=
anslationPlPl[Translation] =3D {</font></div><div><font face=3D"courier new=
, monospace">=C2=A0 [Translation::menuFile] =3D &quot;&amp;Plik&quot;,</fon=
t></div><div><font face=3D"courier new, monospace">=C2=A0 [Translation::men=
uFileNew] =3D &quot;&amp;Nowy&quot;,</font><span style=3D"font-family: &quo=
t;courier new&quot;, monospace;">=C2=A0 =C2=A0 =C2=A0=C2=A0</span><font col=
or=3D"#0000ff" style=3D"font-family: &quot;courier new&quot;, monospace;">/=
/ Or maybe this way is more in C++ style?</font></div><div><font face=3D"co=
urier new, monospace">=C2=A0 [Translation::menuFileOpen] =3D &quot;&amp;Otw=
orz...&quot;,</font></div><div><font face=3D"courier new, monospace">=C2=A0=
 [Translation::menuFileSave] =3D &quot;&amp;Zapisz&quot;,</font></div><div>=
<font face=3D"courier new, monospace">=C2=A0 [Translation::menuFileSaveAs] =
=3D &quot;Z&amp;apisz jako...&quot;,</font></div><div><font face=3D"courier=
 new, monospace"><br></font></div><div><font face=3D"courier new, monospace=
">=C2=A0 // ...</font></div><div><font face=3D"courier new, monospace">};</=
font></div><div><font face=3D"courier new, monospace"><br></font></div><div=
><font face=3D"courier new, monospace">// ...</font></div><div><font face=
=3D"courier new, monospace"><br></font></div><div><font face=3D"courier new=
, monospace"><b>enum class</b> Language {</font></div><div><font face=3D"co=
urier new, monospace">=C2=A0 enUs,</font></div><div><font face=3D"courier n=
ew, monospace">=C2=A0 plPl,</font></div><div><font face=3D"courier new, mon=
ospace"><br></font></div><div><font face=3D"courier new, monospace">=C2=A0 =
// ...</font></div><div><font face=3D"courier new, monospace">};</font></di=
v><div><font face=3D"courier new, monospace"><br></font></div><div><font fa=
ce=3D"courier new, monospace"><b>const char</b> **translations[Language] =
=3D {</font></div><div><font face=3D"courier new, monospace">=C2=A0 transla=
tionEnUs,</font></div><div><font face=3D"courier new, monospace">=C2=A0 tra=
nslationPlPl,</font></div><div><font face=3D"courier new, monospace"><br></=
font></div><div><font face=3D"courier new, monospace">=C2=A0 // ...</font><=
/div><div><font face=3D"courier new, monospace">};</font></div><div><font f=
ace=3D"courier new, monospace"><br></font></div><div><font face=3D"courier =
new, monospace">// ...</font></div><div><font face=3D"courier new, monospac=
e"><br></font></div><div><font face=3D"courier new, monospace">Language lan=
guage =3D Language::enUs;</font></div><div><font face=3D"courier new, monos=
pace"><br></font></div><div><font face=3D"courier new, monospace">// ...</f=
ont></div><div><font face=3D"courier new, monospace"><br></font></div><div>=
<font face=3D"courier new, monospace"><b>int</b> languageId =3D <b>static_c=
ast</b>&lt;<b>int</b>&gt;(language);</font></div><div><font face=3D"courier=
 new, monospace"><b>int</b> translationId =3D <b>static_cast</b>&lt;<b>int<=
/b>&gt;(Translation::menuFileNew);</font></div><div><font face=3D"courier n=
ew, monospace"><b>const char</b> *text =3D translations[languageId][transla=
tionId];</font></div><div><font face=3D"courier new, monospace">menuFileNew=
..setText(text);</font></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/0f801531-bfdb-49b5-a8f5-d5ffffbfcfc7%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/0f801531-bfdb-49b5-a8f5-d5ffffbfcfc7=
%40isocpp.org</a>.<br />

------=_Part_321_426734428.1469552611562--

------=_Part_320_1318306024.1469552611556--

.


Author: Simon Brand <simon@codeplay.com>
Date: Tue, 26 Jul 2016 18:34:59 +0100
Raw View
This is a multi-part message in MIME format.
--------------FD81D1087A0EB6E17D8A9E23
Content-Type: text/plain; charset=UTF-8; format=flowed

Hi Mariusz,

I don't think a language extension is necessary for this. You could just
use a map type or an array indexed by the underlying enumeration value.

For example:

enum class Translation {
   menuFile,
   menuFileNew,
};

std::map<Translation, const char*> translationEnUs {
   {Translation::menuFile, "&File"},
   {Translation::menuFileNew, "&New"},
};

std::map<Translation, const char*> translationPlPl {
   {Translation::menuFile, "&Plik"},
   {Translation::menuFileNew, "&Nowy"},
};

enum class Language {
   enUs,
   plPl
};

std::map<Language,std::map<Translation, const char*>*> translations {
   {Language::enUs, &translationEnUs},
   {Language::plPl, &translationPlPl}
};


int main() {
     Language language = Language::plPl;
     std::cout << (*translations[language])[Translation::menuFileNew];
}

There are a bunch of changes you could make depending on your
requirements, like using std::unordered_map, storing
std::reference_wrappers instead of pointers, etc.

Thanks,
Simon

On 26/07/2016 18:03, Mariusz Moczala wrote:
> Hello everyone,
>
> Could you tell me please what do you think about the C++ language
> extension described in blue comment below?
> Is something similar already available in some version of C++?
>
> Many thanks,
> Mariusz
>
>
> *enum class* Translation {
>   menuFile,
>   menuFileNew,
>   menuFileOpen,
>   menuFileSave,
>   menuFileSaveAs,
>
>   // ...
> };
>
> *const char* *translationEnUs[Translation] = { // Reading from enum
> type returns maximal value held by the enum (4 in this case)
>   Translation::menuFile : "&File",
> Translation::menuFileNew : "&New", // This is a special syntax, that
> does not require to use ordered keys (indices)
> Translation::menuFileOpen : "&Open...",
> Translation::menuFileSave : "&Save",
> Translation::menuFileSaveAs : "S&ave as...",
>
>   // ...
> };
>
> *const char* *translationPlPl[Translation] = {
> [Translation::menuFile] = "&Plik",
> [Translation::menuFileNew] = "&Nowy",// Or maybe this way is more in
> C++ style?
> [Translation::menuFileOpen] = "&Otworz...",
> [Translation::menuFileSave] = "&Zapisz",
> [Translation::menuFileSaveAs] = "Z&apisz jako...",
>
>   // ...
> };
>
> // ...
>
> *enum class* Language {
>   enUs,
>   plPl,
>
>   // ...
> };
>
> *const char* **translations[Language] = {
>   translationEnUs,
>   translationPlPl,
>
>   // ...
> };
>
> // ...
>
> Language language = Language::enUs;
>
> // ...
>
> *int* languageId = *static_cast*<*int*>(language);
> *int* translationId = *static_cast*<*int*>(Translation::menuFileNew);
> *const char* *text = translations[languageId][translationId];
> menuFileNew.setText(text);
> --
> 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
> <mailto:std-proposals+unsubscribe@isocpp.org>.
> To post to this group, send email to std-proposals@isocpp.org
> <mailto:std-proposals@isocpp.org>.
> To view this discussion on the web visit
> https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/0f801531-bfdb-49b5-a8f5-d5ffffbfcfc7%40isocpp.org
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/0f801531-bfdb-49b5-a8f5-d5ffffbfcfc7%40isocpp.org?utm_medium=email&utm_source=footer>.

--
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/a5fd12a8-10a9-4490-ed77-c1c75fc5ffd4%40codeplay.com.

--------------FD81D1087A0EB6E17D8A9E23
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">
    <p>Hi Mariusz,</p>
    <p>I don't think a language extension is necessary for this. You
      could just use a map type or an array indexed by the underlying
      enumeration value.<br>
    </p>
    For example:<br>
    <br>
    <tt>enum class Translation {</tt><tt><br>
    </tt><tt>=C2=A0 menuFile,</tt><tt><br>
    </tt><tt>=C2=A0 menuFileNew,</tt><tt><br>
    </tt><tt>};</tt><tt><br>
    </tt><tt><br>
    </tt><tt>std::map&lt;Translation, const char*&gt; translationEnUs {</tt=
><tt><br>
    </tt><tt>=C2=A0 {Translation::menuFile, "&amp;File"},</tt><tt><br>
    </tt><tt>=C2=A0 {Translation::menuFileNew, "&amp;New"},</tt><tt><br>
    </tt><tt>};</tt><tt><br>
    </tt><tt><br>
    </tt><tt>std::map&lt;Translation, const char*&gt; translationPlPl {</tt=
><tt><br>
    </tt><tt>=C2=A0 {Translation::menuFile, "&amp;Plik"},</tt><tt><br>
    </tt><tt>=C2=A0 {Translation::menuFileNew, "&amp;Nowy"},</tt><tt><br>
    </tt><tt>};</tt><tt><br>
    </tt><tt><br>
    </tt><tt>enum class Language {</tt><tt><br>
    </tt><tt>=C2=A0 enUs,</tt><tt><br>
    </tt><tt>=C2=A0 plPl</tt><tt><br>
    </tt><tt>};</tt><tt><br>
    </tt><tt><br>
    </tt><tt>std::map&lt;Language,std::map&lt;Translation, const
      char*&gt;*&gt; translations {</tt><tt><br>
    </tt><tt>=C2=A0 {Language::enUs, &amp;translationEnUs},</tt><tt><br>
    </tt><tt>=C2=A0 {Language::plPl, &amp;translationPlPl}</tt><tt><br>
    </tt><tt>};</tt><tt><br>
    </tt><tt><br>
    </tt><tt><br>
    </tt><tt>int main() {</tt><tt><br>
    </tt><tt>=C2=A0=C2=A0=C2=A0 Language language =3D Language::plPl;</tt><=
tt><br>
    </tt><tt>=C2=A0=C2=A0=C2=A0 std::cout &lt;&lt;
      (*translations[language])[Translation::menuFileNew];</tt><tt><br>
    </tt><tt>}</tt><br>
    <br>
    There are a bunch of changes you could make depending on your
    requirements, like using <tt>std::unordered_map,</tt> storing <tt>std::=
reference_wrapper</tt>s
    instead of pointers, etc.<br>
    <br>
    Thanks,<br>
    Simon<br>
    <br>
    <div class=3D"moz-cite-prefix">On 26/07/2016 18:03, Mariusz Moczala
      wrote:<br>
    </div>
    <blockquote
      cite=3D"mid:0f801531-bfdb-49b5-a8f5-d5ffffbfcfc7@isocpp.org"
      type=3D"cite">
      <div dir=3D"ltr">
        <div>Hello everyone,</div>
        <div><br>
        </div>
        <div>Could you tell me please what do you think about the C++
          language extension described in <font color=3D"#0000ff">blue </fo=
nt>comment
          below?</div>
        <div>Is something similar already available in some version of
          C++?</div>
        <div><br>
        </div>
        <div>Many thanks,</div>
        <div>Mariusz</div>
        <div><br>
        </div>
        <div><br>
        </div>
        <div><font face=3D"courier new, monospace"><b>enum class</b>
            Translation {<br>
          </font></div>
        <div><font face=3D"courier new, monospace">=C2=A0 menuFile,</font><=
/div>
        <div><font face=3D"courier new, monospace">=C2=A0 menuFileNew,</fon=
t></div>
        <div><font face=3D"courier new, monospace">=C2=A0 menuFileOpen,</fo=
nt></div>
        <div><font face=3D"courier new, monospace">=C2=A0 menuFileSave,</fo=
nt></div>
        <div><font face=3D"courier new, monospace">=C2=A0 menuFileSaveAs,</=
font></div>
        <div><font face=3D"courier new, monospace"><br>
          </font></div>
        <div><font face=3D"courier new, monospace">=C2=A0 // ...</font></di=
v>
        <div><font face=3D"courier new, monospace">};</font></div>
        <div><font face=3D"courier new, monospace"><br>
          </font></div>
        <div><font face=3D"courier new, monospace"><b>const char</b>
            *translationEnUs[Translation] =3D { <font color=3D"#0000ff">//
              Reading from enum type returns maximal value held by the
              enum (4 in this case)</font></font></div>
        <div><font face=3D"courier new, monospace">=C2=A0 Translation::menu=
File
            : "&amp;File",</font></div>
        <div><font face=3D"courier new, monospace">=C2=A0
            Translation::menuFileNew : "&amp;New", =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 <font
              color=3D"#0000ff">// This is a special syntax, that does not
              require to use ordered keys (indices)</font></font></div>
        <div><font face=3D"courier new, monospace">=C2=A0
            Translation::menuFileOpen : "&amp;Open...",</font></div>
        <div><font face=3D"courier new, monospace">=C2=A0
            Translation::menuFileSave : "&amp;Save",</font></div>
        <div><font face=3D"courier new, monospace">=C2=A0
            Translation::menuFileSaveAs : "S&amp;ave as...",</font></div>
        <div><font face=3D"courier new, monospace"><br>
          </font></div>
        <div><font face=3D"courier new, monospace">=C2=A0 // ...</font></di=
v>
        <div><font face=3D"courier new, monospace">};</font></div>
        <div><font face=3D"courier new, monospace"><br>
          </font></div>
        <div><font face=3D"courier new, monospace"><b>const char</b>
            *translationPlPl[Translation] =3D {</font></div>
        <div><font face=3D"courier new, monospace">=C2=A0
            [Translation::menuFile] =3D "&amp;Plik",</font></div>
        <div><font face=3D"courier new, monospace">=C2=A0
            [Translation::menuFileNew] =3D "&amp;Nowy",</font><span
            style=3D"font-family: &quot;courier new&quot;, monospace;">=C2=
=A0 =C2=A0
            =C2=A0=C2=A0</span><font style=3D"font-family: &quot;courier ne=
w&quot;,
            monospace;" color=3D"#0000ff">// Or maybe this way is more in
            C++ style?</font></div>
        <div><font face=3D"courier new, monospace">=C2=A0
            [Translation::menuFileOpen] =3D "&amp;Otworz...",</font></div>
        <div><font face=3D"courier new, monospace">=C2=A0
            [Translation::menuFileSave] =3D "&amp;Zapisz",</font></div>
        <div><font face=3D"courier new, monospace">=C2=A0
            [Translation::menuFileSaveAs] =3D "Z&amp;apisz jako...",</font>=
</div>
        <div><font face=3D"courier new, monospace"><br>
          </font></div>
        <div><font face=3D"courier new, monospace">=C2=A0 // ...</font></di=
v>
        <div><font face=3D"courier new, monospace">};</font></div>
        <div><font face=3D"courier new, monospace"><br>
          </font></div>
        <div><font face=3D"courier new, monospace">// ...</font></div>
        <div><font face=3D"courier new, monospace"><br>
          </font></div>
        <div><font face=3D"courier new, monospace"><b>enum class</b>
            Language {</font></div>
        <div><font face=3D"courier new, monospace">=C2=A0 enUs,</font></div=
>
        <div><font face=3D"courier new, monospace">=C2=A0 plPl,</font></div=
>
        <div><font face=3D"courier new, monospace"><br>
          </font></div>
        <div><font face=3D"courier new, monospace">=C2=A0 // ...</font></di=
v>
        <div><font face=3D"courier new, monospace">};</font></div>
        <div><font face=3D"courier new, monospace"><br>
          </font></div>
        <div><font face=3D"courier new, monospace"><b>const char</b>
            **translations[Language] =3D {</font></div>
        <div><font face=3D"courier new, monospace">=C2=A0 translationEnUs,<=
/font></div>
        <div><font face=3D"courier new, monospace">=C2=A0 translationPlPl,<=
/font></div>
        <div><font face=3D"courier new, monospace"><br>
          </font></div>
        <div><font face=3D"courier new, monospace">=C2=A0 // ...</font></di=
v>
        <div><font face=3D"courier new, monospace">};</font></div>
        <div><font face=3D"courier new, monospace"><br>
          </font></div>
        <div><font face=3D"courier new, monospace">// ...</font></div>
        <div><font face=3D"courier new, monospace"><br>
          </font></div>
        <div><font face=3D"courier new, monospace">Language language =3D
            Language::enUs;</font></div>
        <div><font face=3D"courier new, monospace"><br>
          </font></div>
        <div><font face=3D"courier new, monospace">// ...</font></div>
        <div><font face=3D"courier new, monospace"><br>
          </font></div>
        <div><font face=3D"courier new, monospace"><b>int</b> languageId =
=3D
            <b>static_cast</b>&lt;<b>int</b>&gt;(language);</font></div>
        <div><font face=3D"courier new, monospace"><b>int</b>
            translationId =3D <b>static_cast</b>&lt;<b>int</b>&gt;(Translat=
ion::menuFileNew);</font></div>
        <div><font face=3D"courier new, monospace"><b>const char</b> *text
            =3D translations[languageId][translationId];</font></div>
        <div><font face=3D"courier new, monospace">menuFileNew.setText(text=
);</font></div>
      </div>
      -- <br>
      You received this message because you are subscribed to the Google
      Groups "ISO C++ Standard - Future Proposals" group.<br>
      To unsubscribe from this group and stop receiving emails from it,
      send an email to <a moz-do-not-send=3D"true"
        href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposals+=
unsubscribe@isocpp.org</a>.<br>
      To post to this group, send email to <a moz-do-not-send=3D"true"
        href=3D"mailto:std-proposals@isocpp.org">std-proposals@isocpp.org</=
a>.<br>
      To view this discussion on the web visit <a
        moz-do-not-send=3D"true"
href=3D"https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/0f8015=
31-bfdb-49b5-a8f5-d5ffffbfcfc7%40isocpp.org?utm_medium=3Demail&amp;utm_sour=
ce=3Dfooter">https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/0=
f801531-bfdb-49b5-a8f5-d5ffffbfcfc7%40isocpp.org</a>.<br>
    </blockquote>
    <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/a5fd12a8-10a9-4490-ed77-c1c75fc5ffd4%=
40codeplay.com?utm_medium=3Demail&utm_source=3Dfooter">https://groups.googl=
e.com/a/isocpp.org/d/msgid/std-proposals/a5fd12a8-10a9-4490-ed77-c1c75fc5ff=
d4%40codeplay.com</a>.<br />

--------------FD81D1087A0EB6E17D8A9E23--

.


Author: Mariusz Moczala <mmoczala@gmail.com>
Date: Tue, 26 Jul 2016 10:56:08 -0700 (PDT)
Raw View
------=_Part_479_311191707.1469555768397
Content-Type: multipart/alternative;
 boundary="----=_Part_480_1058487044.1469555768397"

------=_Part_480_1058487044.1469555768397
Content-Type: text/plain; charset=UTF-8

Hi Simon,

Thank you very much for your comments!
I fully agree with your solution.

Thanks,
Mariusz

--
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/bdcea360-29dc-49aa-8b17-eec98b44e752%40isocpp.org.

------=_Part_480_1058487044.1469555768397
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Hi Simon,</div><div><br></div>Thank you very much for=
 your comments!<div>I fully agree with your solution.</div><div><br></div><=
div>Thanks,</div><div>Mariusz</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/bdcea360-29dc-49aa-8b17-eec98b44e752%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/bdcea360-29dc-49aa-8b17-eec98b44e752=
%40isocpp.org</a>.<br />

------=_Part_480_1058487044.1469555768397--

------=_Part_479_311191707.1469555768397--

.