Topic: Extending explicit specifier


Author: Richard Thorell <richard.thorell@king.com>
Date: Mon, 30 Jan 2017 12:41:33 -0800 (PST)
Raw View
------=_Part_2081_1268101381.1485808893144
Content-Type: multipart/alternative;
 boundary="----=_Part_2082_629104179.1485808893144"

------=_Part_2082_629104179.1485808893144
Content-Type: text/plain; charset=UTF-8

Hey,

Since we now have conditional explicit constructors
(http://en.cppreference.com/w/cpp/utility/optional/optional) maybe we could
"upgrade" the explicit specifier to work the same way as the noexcept
specifier by introducing a compile time expression to be evaluated to mark
the constructor/function explicit. This change wouldn't be any breaking
change this a simple explicit would evaluate to explicit(true) the same way
noexcept works.

e.g:
template <class U, ... *insert a million other checks here*>
explicit(std::is_convertible_v<const U&, T>) optional(const optional<U>&
other)

Have this already been thought of? Feedback is welcome :)

Cheers

--
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/d3e907bd-cb7e-4ab8-8822-e5b8f86a705a%40isocpp.org.

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

<div dir=3D"ltr">Hey,<div><br></div><div>Since we now have conditional expl=
icit constructors (http://en.cppreference.com/w/cpp/utility/optional/option=
al) maybe we could &quot;upgrade&quot; the explicit specifier to work the s=
ame way as the noexcept specifier by introducing a compile time expression =
to be evaluated to mark the constructor/function explicit. This change woul=
dn&#39;t be any breaking change this a simple explicit would evaluate to ex=
plicit(true) the same way noexcept works.</div><div><br></div><div>e.g:</di=
v><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"subpretty=
print"><span style=3D"color: #008;" class=3D"styled-by-prettify">template</=
span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><spa=
n style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</span><span styl=
e=3D"color: #008;" class=3D"styled-by-prettify">class</span><span style=3D"=
color: #000;" class=3D"styled-by-prettify"> U</span><span style=3D"color: #=
660;" class=3D"styled-by-prettify">,</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"sty=
led-by-prettify">...</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">insert a=
 million other checks here</span><span style=3D"color: #660;" class=3D"styl=
ed-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-prett=
ify">explicit</span><span style=3D"color: #660;" class=3D"styled-by-prettif=
y">(</span><span style=3D"color: #000;" class=3D"styled-by-prettify">std</s=
pan><span style=3D"color: #660;" class=3D"styled-by-prettify">::</span><spa=
n style=3D"color: #000;" class=3D"styled-by-prettify">is_convertible_v</spa=
n><span style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</span><spa=
n style=3D"color: #008;" class=3D"styled-by-prettify">const</span><span sty=
le=3D"color: #000;" class=3D"styled-by-prettify"> U</span><span style=3D"co=
lor: #660;" class=3D"styled-by-prettify">&amp;,</span><span style=3D"color:=
 #000;" class=3D"styled-by-prettify"> T</span><span style=3D"color: #660;" =
class=3D"styled-by-prettify">&gt;)</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> optional</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">(</span><span style=3D"color: #008;" class=3D"style=
d-by-prettify">const</span><span style=3D"color: #000;" class=3D"styled-by-=
prettify"> optional</span><span style=3D"color: #660;" class=3D"styled-by-p=
rettify">&lt;</span><span style=3D"color: #000;" class=3D"styled-by-prettif=
y">U</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&gt;&a=
mp;</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> other<=
/span><span style=3D"color: #660;" class=3D"styled-by-prettify">)</span></d=
iv></code></div><div><br></div><div>Have this already been thought of? Feed=
back is welcome :)</div><div><br></div><div>Cheers</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/d3e907bd-cb7e-4ab8-8822-e5b8f86a705a%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/d3e907bd-cb7e-4ab8-8822-e5b8f86a705a=
%40isocpp.org</a>.<br />

------=_Part_2082_629104179.1485808893144--

------=_Part_2081_1268101381.1485808893144--

.


Author: "'Matt Calabrese' via ISO C++ Standard - Future Proposals" <std-proposals@isocpp.org>
Date: Mon, 30 Jan 2017 15:55:26 -0500
Raw View
--001a1141fb8af81d6f0547560839
Content-Type: text/plain; charset=UTF-8

On Mon, Jan 30, 2017 at 3:41 PM, Richard Thorell <richard.thorell@king.com>
wrote:

> Hey,
>
> Since we now have conditional explicit constructors (
> http://en.cppreference.com/w/cpp/utility/optional/optional) maybe we
> could "upgrade" the explicit specifier to work the same way as the noexcept
> specifier by introducing a compile time expression to be evaluated to mark
> the constructor/function explicit. This change wouldn't be any breaking
> change this a simple explicit would evaluate to explicit(true) the same way
> noexcept works.
>
> e.g:
> template <class U, ... *insert a million other checks here*>
> explicit(std::is_convertible_v<const U&, T>) optional(const optional<U>&
> other)
>
> Have this already been thought of? Feedback is welcome :)
>

It's been thought of and talked about by members of the committee, however
I don't know if anyone actually went and wrote a proposal, so you might
want to write the paper if you're up for it (I'd double check the mailings,
first). Stephan Lavavej voiced a desire for this exact facility -- maybe
also ping him and see if he's actively pursuing it?

--
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/CANh8DEn3U_Vj3mkWO4O32K-zJ7LtMiim5yqeEaGTkyox73OaDg%40mail.gmail.com.

--001a1141fb8af81d6f0547560839
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On M=
on, Jan 30, 2017 at 3:41 PM, Richard Thorell <span dir=3D"ltr">&lt;<a href=
=3D"mailto:richard.thorell@king.com" target=3D"_blank">richard.thorell@king=
..com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"lt=
r">Hey,<div><br></div><div>Since we now have conditional explicit construct=
ors (<a href=3D"http://en.cppreference.com/w/cpp/utility/optional/optional"=
 target=3D"_blank">http://en.cppreference.com/w/<wbr>cpp/utility/optional/o=
ptional</a>) maybe we could &quot;upgrade&quot; the explicit specifier to w=
ork the same way as the noexcept specifier by introducing a compile time ex=
pression to be evaluated to mark the constructor/function explicit. This ch=
ange wouldn&#39;t be any breaking change this a simple explicit would evalu=
ate to explicit(true) the same way noexcept works.</div><div><br></div><div=
>e.g:</div><div class=3D"m_1691923565821685150prettyprint" style=3D"backgro=
und-color:rgb(250,250,250);border-color:rgb(187,187,187);border-style:solid=
;border-width:1px;word-wrap:break-word"><code class=3D"m_169192356582168515=
0prettyprint"><div class=3D"m_1691923565821685150subprettyprint"><span styl=
e=3D"color:#008" class=3D"m_1691923565821685150styled-by-prettify">template=
</span><span style=3D"color:#000" class=3D"m_1691923565821685150styled-by-p=
rettify"> </span><span style=3D"color:#660" class=3D"m_1691923565821685150s=
tyled-by-prettify">&lt;</span><span style=3D"color:#008" class=3D"m_1691923=
565821685150styled-by-prettify">class</span><span style=3D"color:#000" clas=
s=3D"m_1691923565821685150styled-by-prettify"> U</span><span style=3D"color=
:#660" class=3D"m_1691923565821685150styled-by-prettify">,</span><span styl=
e=3D"color:#000" class=3D"m_1691923565821685150styled-by-prettify"> </span>=
<span style=3D"color:#660" class=3D"m_1691923565821685150styled-by-prettify=
">...</span><span style=3D"color:#000" class=3D"m_1691923565821685150styled=
-by-prettify"> </span><span style=3D"color:#660" class=3D"m_169192356582168=
5150styled-by-prettify">*</span><span style=3D"color:#000" class=3D"m_16919=
23565821685150styled-by-prettify">insert a million other checks here</span>=
<span style=3D"color:#660" class=3D"m_1691923565821685150styled-by-prettify=
">*&gt;</span><span style=3D"color:#000" class=3D"m_1691923565821685150styl=
ed-by-prettify"><br></span><span style=3D"color:#008" class=3D"m_1691923565=
821685150styled-by-prettify">explicit</span><span style=3D"color:#660" clas=
s=3D"m_1691923565821685150styled-by-prettify">(</span><span style=3D"color:=
#000" class=3D"m_1691923565821685150styled-by-prettify">std</span><span sty=
le=3D"color:#660" class=3D"m_1691923565821685150styled-by-prettify">::</spa=
n><span style=3D"color:#000" class=3D"m_1691923565821685150styled-by-pretti=
fy">is_convertible_v</span><span style=3D"color:#660" class=3D"m_1691923565=
821685150styled-by-prettify"><wbr>&lt;</span><span style=3D"color:#008" cla=
ss=3D"m_1691923565821685150styled-by-prettify">const</span><span style=3D"c=
olor:#000" class=3D"m_1691923565821685150styled-by-prettify"> U</span><span=
 style=3D"color:#660" class=3D"m_1691923565821685150styled-by-prettify">&am=
p;,</span><span style=3D"color:#000" class=3D"m_1691923565821685150styled-b=
y-prettify"> T</span><span style=3D"color:#660" class=3D"m_1691923565821685=
150styled-by-prettify">&gt;)</span><span style=3D"color:#000" class=3D"m_16=
91923565821685150styled-by-prettify"> optional</span><span style=3D"color:#=
660" class=3D"m_1691923565821685150styled-by-prettify">(</span><span style=
=3D"color:#008" class=3D"m_1691923565821685150styled-by-prettify">const</sp=
an><span style=3D"color:#000" class=3D"m_1691923565821685150styled-by-prett=
ify"> optional</span><span style=3D"color:#660" class=3D"m_1691923565821685=
150styled-by-prettify">&lt;</span><span style=3D"color:#000" class=3D"m_169=
1923565821685150styled-by-prettify">U</span><span style=3D"color:#660" clas=
s=3D"m_1691923565821685150styled-by-prettify">&gt;&amp;</span><span style=
=3D"color:#000" class=3D"m_1691923565821685150styled-by-prettify"> other</s=
pan><span style=3D"color:#660" class=3D"m_1691923565821685150styled-by-pret=
tify">)</span></div></code></div><div><br></div><div>Have this already been=
 thought of? Feedback is welcome :)</div></div></blockquote><div><br></div>=
<div>It&#39;s been thought of and talked about by members of the committee,=
 however I don&#39;t know if anyone actually went and wrote a proposal, so =
you might want to write the paper if you&#39;re up for it (I&#39;d double c=
heck the mailings, first). Stephan Lavavej voiced a desire for this exact f=
acility -- maybe also ping him and see if he&#39;s actively pursuing it?</d=
iv></div></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/CANh8DEn3U_Vj3mkWO4O32K-zJ7LtMiim5yqe=
EaGTkyox73OaDg%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">htt=
ps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CANh8DEn3U_Vj3mkW=
O4O32K-zJ7LtMiim5yqeEaGTkyox73OaDg%40mail.gmail.com</a>.<br />

--001a1141fb8af81d6f0547560839--

.


Author: Ville Voutilainen <ville.voutilainen@gmail.com>
Date: Mon, 30 Jan 2017 23:10:43 +0200
Raw View
On 30 January 2017 at 22:55, 'Matt Calabrese' via ISO C++ Standard -
Future Proposals <std-proposals@isocpp.org> wrote:
> On Mon, Jan 30, 2017 at 3:41 PM, Richard Thorell <richard.thorell@king.com>
> wrote:
>>
>> Hey,
>>
>> Since we now have conditional explicit constructors
>> (http://en.cppreference.com/w/cpp/utility/optional/optional) maybe we could
>> "upgrade" the explicit specifier to work the same way as the noexcept
>> specifier by introducing a compile time expression to be evaluated to mark
>> the constructor/function explicit. This change wouldn't be any breaking
>> change this a simple explicit would evaluate to explicit(true) the same way
>> noexcept works.
>>
>> e.g:
>> template <class U, ... *insert a million other checks here*>
>> explicit(std::is_convertible_v<const U&, T>) optional(const optional<U>&
>> other)
>>
>> Have this already been thought of? Feedback is welcome :)
>
>
> It's been thought of and talked about by members of the committee, however I
> don't know if anyone actually went and wrote a proposal, so you might want
> to write the paper if you're up for it (I'd double check the mailings,
> first). Stephan Lavavej voiced a desire for this exact facility -- maybe
> also ping him and see if he's actively pursuing it?


Thought of, sure. Unlike STL, just because I needed it in ten places
in the library, I didn't proceed
with suggesting it to be standardized. :) Some other people wrote to
me to ask for my opinion
on whether it should be standardized, my response was "doesn't pass
the bar for that, based
on my field experience".

--
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/CAFk2RUay5Lb6X0GnnDV3s8Nxo3u4HK3wF4QDBoeiRPp1c%3DqoGw%40mail.gmail.com.

.


Author: Barry Revzin <barry.revzin@gmail.com>
Date: Wed, 1 Feb 2017 07:15:28 -0800 (PST)
Raw View
------=_Part_8906_2147324252.1485962128570
Content-Type: multipart/alternative;
 boundary="----=_Part_8907_1456260725.1485962128571"

------=_Part_8907_1456260725.1485962128571
Content-Type: text/plain; charset=UTF-8

While we're on the topic of conditionally explicit, another thing that I
see crop up occasionally is the need to conditionally delete. Like I might
have a constructor I may want to SFINAE on, but also SFINAE delete to avoid
a different constructor matching.

To make up syntax on the spot:

// example I have in my code base
template <class... Args,
   std::enable_if_t<std::is_constructible<X, Args&&...>::value, int> = 0>
Foo(tag_t, Args&&... ) { ... }

template <class... Args,
   std::enable_if_t<!std::is_constructible<X, Args&&...>::value, int> = 0>
Foo(tag_t, Args&&... ) = delete;

// maybe instead
template <class... Args>
Foo(tag_t, Args&&...) = delete(!std::is_constructible<X, Args&&...>::value)
{
    // proceed if X is constructible
}

If conditional explicit doesn't pass the bar, this one probably even less
so, but just wanted to throw it out there to see if anybody else ever had
the need for such a thing.

--
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/15885363-0083-44d0-8fd8-87e794b0bfde%40isocpp.org.

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

<div dir=3D"ltr">While we&#39;re on the topic of conditionally explicit, an=
other thing that I see crop up occasionally is the need to conditionally de=
lete. Like I might have a constructor I may want to SFINAE on, but also SFI=
NAE delete to avoid a different constructor matching.<div><br></div><div>To=
 make up syntax on the spot:</div><div><br></div><div><div class=3D"prettyp=
rint" 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"><font color=3D"#=
660066"><span style=3D"color: #800;" class=3D"styled-by-prettify">// exampl=
e I have in my code base</span><span style=3D"color: #000;" class=3D"styled=
-by-prettify"><br></span><span style=3D"color: #008;" class=3D"styled-by-pr=
ettify">template</span><span style=3D"color: #000;" class=3D"styled-by-pret=
tify"> </span><span style=3D"color: #660;" class=3D"styled-by-prettify">&lt=
;</span><span style=3D"color: #008;" class=3D"styled-by-prettify">class</sp=
an><span style=3D"color: #660;" class=3D"styled-by-prettify">...</span><spa=
n style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #606;" class=3D"styled-by-prettify">Args</span><span style=3D"co=
lor: #660;" class=3D"styled-by-prettify">,</span><span style=3D"color: #000=
;" class=3D"styled-by-prettify"><br>=C2=A0 =C2=A0std</span><span style=3D"c=
olor: #660;" class=3D"styled-by-prettify">::</span><span style=3D"color: #0=
00;" class=3D"styled-by-prettify">enable_if_t</span><span style=3D"color: #=
660;" class=3D"styled-by-prettify">&lt;</span><span style=3D"color: #000;" =
class=3D"styled-by-prettify">std</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">::</span><span style=3D"color: #000;" class=3D"styl=
ed-by-prettify">is_constructible</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">&lt;</span><span style=3D"color: #000;" class=3D"st=
yled-by-prettify">X</span><span style=3D"color: #660;" class=3D"styled-by-p=
rettify">,</span><span style=3D"color: #000;" class=3D"styled-by-prettify">=
 </span><span style=3D"color: #606;" class=3D"styled-by-prettify">Args</spa=
n><span style=3D"color: #660;" class=3D"styled-by-prettify">&amp;&amp;...&g=
t;::</span><span style=3D"color: #000;" class=3D"styled-by-prettify">value<=
/span><span style=3D"color: #660;" class=3D"styled-by-prettify">,</span><sp=
an style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #008;" class=3D"styled-by-prettify">int</span><span style=3D"col=
or: #660;" class=3D"styled-by-prettify">&gt;</span><span style=3D"color: #0=
00;" class=3D"styled-by-prettify"> </span><span style=3D"color: #660;" clas=
s=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"st=
yled-by-prettify"> </span><span style=3D"color: #066;" class=3D"styled-by-p=
rettify">0</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: #606;" class=3D"styled-by-prettify">Foo</span><s=
pan style=3D"color: #660;" class=3D"styled-by-prettify">(</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify">tag_t</span><span style=3D"c=
olor: #660;" class=3D"styled-by-prettify">,</span><span style=3D"color: #00=
0;" class=3D"styled-by-prettify"> </span><span style=3D"color: #606;" class=
=3D"styled-by-prettify">Args</span><span style=3D"color: #660;" class=3D"st=
yled-by-prettify">&amp;&amp;...</span><span style=3D"color: #000;" class=3D=
"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"styled-b=
y-prettify">)</span><span style=3D"color: #000;" class=3D"styled-by-prettif=
y"> </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 s=
tyle=3D"color: #660;" class=3D"styled-by-prettify">...</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;" cla=
ss=3D"styled-by-prettify"><br><br></span></font><span style=3D"color: #008;=
" class=3D"styled-by-prettify">template</span><span style=3D"color: #000;" =
class=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"=
styled-by-prettify">&lt;</span><span style=3D"color: #008;" class=3D"styled=
-by-prettify">class</span><span style=3D"color: #660;" class=3D"styled-by-p=
rettify">...</span><span style=3D"color: #000;" class=3D"styled-by-prettify=
"> </span><span style=3D"color: #606;" class=3D"styled-by-prettify">Args</s=
pan><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=A0std</=
span><span style=3D"color: #660;" class=3D"styled-by-prettify">::</span><sp=
an style=3D"color: #000;" class=3D"styled-by-prettify">enable_if_t</span><s=
pan style=3D"color: #660;" class=3D"styled-by-prettify">&lt;!</span><span s=
tyle=3D"color: #000;" class=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-by-prettify">is_constructible</span><span style=3D"c=
olor: #660;" class=3D"styled-by-prettify">&lt;</span><span style=3D"color: =
#000;" class=3D"styled-by-prettify">X</span><span style=3D"color: #660;" cl=
ass=3D"styled-by-prettify">,</span><span style=3D"color: #000;" class=3D"st=
yled-by-prettify"> </span><span style=3D"color: #606;" class=3D"styled-by-p=
rettify">Args</span><span style=3D"color: #660;" class=3D"styled-by-prettif=
y">&amp;&amp;...&gt;::</span><span style=3D"color: #000;" class=3D"styled-b=
y-prettify">value</span><span style=3D"color: #660;" class=3D"styled-by-pre=
ttify">,</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> <=
/span><span style=3D"color: #008;" class=3D"styled-by-prettify">int</span><=
span style=3D"color: #660;" class=3D"styled-by-prettify">&gt;</span><span s=
tyle=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"c=
olor: #660;" class=3D"styled-by-prettify">=3D</span><span style=3D"color: #=
000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #066;" cla=
ss=3D"styled-by-prettify">0</span><span style=3D"color: #660;" class=3D"sty=
led-by-prettify">&gt;</span><span style=3D"color: #000;" class=3D"styled-by=
-prettify"><br></span><span style=3D"color: #606;" class=3D"styled-by-prett=
ify">Foo</span><span style=3D"color: #660;" class=3D"styled-by-prettify">(<=
/span><span style=3D"color: #000;" class=3D"styled-by-prettify">tag_t</span=
><span style=3D"color: #660;" class=3D"styled-by-prettify">,</span><span st=
yle=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"co=
lor: #606;" class=3D"styled-by-prettify">Args</span><span style=3D"color: #=
660;" class=3D"styled-by-prettify">&amp;&amp;...</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><font color=3D"#666600"><span style=3D"color: #=
660;" class=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;" c=
lass=3D"styled-by-prettify"> </span><span style=3D"color: #008;" class=3D"s=
tyled-by-prettify">delete</span><span style=3D"color: #660;" class=3D"style=
d-by-prettify">;</span><span style=3D"color: #000;" class=3D"styled-by-pret=
tify"><br></span></font><span style=3D"color: #000;" class=3D"styled-by-pre=
ttify"><br></span><span style=3D"color: #800;" class=3D"styled-by-prettify"=
>// maybe instead</span><span style=3D"color: #000;" class=3D"styled-by-pre=
ttify"><br></span><span style=3D"color: #008;" class=3D"styled-by-prettify"=
>template</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> =
</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</span=
><span style=3D"color: #008;" class=3D"styled-by-prettify">class</span><spa=
n 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">Args</span><span style=3D"color: #660=
;" class=3D"styled-by-prettify">&gt;</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"><br></span><span style=3D"color: #606;" class=3D"=
styled-by-prettify">Foo</span><span style=3D"color: #660;" class=3D"styled-=
by-prettify">(</span><span style=3D"color: #000;" class=3D"styled-by-pretti=
fy">tag_t</span><span style=3D"color: #660;" class=3D"styled-by-prettify">,=
</span><font color=3D"#000000"><span style=3D"color: #000;" class=3D"styled=
-by-prettify"> </span><span style=3D"color: #606;" class=3D"styled-by-prett=
ify">Args</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&=
amp;&amp;...)</span><span style=3D"color: #000;" class=3D"styled-by-prettif=
y"> </span><span style=3D"color: #660;" class=3D"styled-by-prettify">=3D</s=
pan><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span=
 style=3D"color: #008;" class=3D"styled-by-prettify">delete</span><span sty=
le=3D"color: #660;" class=3D"styled-by-prettify">(!</span><span style=3D"co=
lor: #000;" class=3D"styled-by-prettify">std</span><span style=3D"color: #6=
60;" class=3D"styled-by-prettify">::</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify">is_constructible</span><span style=3D"color: #660=
;" class=3D"styled-by-prettify">&lt;</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify">X</span><span style=3D"color: #660;" class=3D"sty=
led-by-prettify">,</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"> </span><span style=3D"color: #606;" class=3D"styled-by-prettify">A=
rgs</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&amp;&a=
mp;...&gt;::</span><span style=3D"color: #000;" class=3D"styled-by-prettify=
">value</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: #660;" class=3D"styled-by-prettify">{</span><span styl=
e=3D"color: #000;" class=3D"styled-by-prettify"><br>=C2=A0 =C2=A0 </span><s=
pan style=3D"color: #800;" class=3D"styled-by-prettify">// proceed if X is =
constructible</span><span style=3D"color: #000;" class=3D"styled-by-prettif=
y"><br></span><span style=3D"color: #660;" class=3D"styled-by-prettify">}</=
span></font></div></code></div><br>If conditional explicit doesn&#39;t pass=
 the bar, this one probably even less so, but just wanted to throw it out t=
here to see if anybody else ever had the need for such a thing.=C2=A0</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/15885363-0083-44d0-8fd8-87e794b0bfde%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/15885363-0083-44d0-8fd8-87e794b0bfde=
%40isocpp.org</a>.<br />

------=_Part_8907_1456260725.1485962128571--

------=_Part_8906_2147324252.1485962128570--

.