Re: C++11, 'throw', etc.

Piotr Stanczyk <[email protected]> Thu, 10 Aug 2017 11:12:44 -0700
Newsgroups gmane.comp.video.openexr.devel
Message-ID <CALVgk2o47woBMdXsVTdOK-Dfr2Kn2-yekuZdTuG0cYhyv8rZXg@mail.gmail.com>
--===============0738191178984339988==
Content-Type: multipart/alternative; boundary="94eb2c18d62ca1bd7a05566a245e"

--94eb2c18d62ca1bd7a05566a245e
Content-Type: text/plain; charset="UTF-8"

Are there any vendors for whom this would cause an issue? Else, I would
vote for moving things forward


On 10 August 2017 at 10:18, Larry Gritz <[email protected]> wrote:

> Ugh, so it's worse than I thought.
>
> I suppose I'm willing to fix and submit a patch to address this.
>
> Do I need to put in the proper macros to make it compile on everything
> from C++03 through 17? Does anybody want to argue for continuing to
> maintain C++03 compatibility for future OpenEXR releases, or is it finally
> time (six years after the C++ standard and 2+ years after VFXPlatform) to
> raise the floor to C++11?
>
> -- lg
>
>
> On Aug 9, 2017, at 11:38 PM, Werner Benger <[email protected]> wrote:
>
> It should be noted that dynamic expressions are actually forbidden in
> C++17, so OpenEXR does no longer compile with GCC 7.1 when std C++17 is
> enabled. The highest C++ version that can be used to compile it is C++14,
> where it's still just a warning, while in C++17 it's an error. It would be
> good to have OpenEXR at least compilable in C++17.  Major C++ libraries
> such as QT are using C++11 nowadays, so it seems pretty safe to go beyond
> C++03 for modern applications, a lot of things are indeed much easier.
>
>     Werner
>
>
> On 10.08.2017 00:20, Larry Gritz wrote:
>
> In a test compile with gcc 7, I get lots of errors of the following ilk:
>
> /home/travis/build/lgritz/openexr/IlmBase/Imath/ImathVec.h:228:34:
> warning: dynamic exception specifications are deprecated in C++11
> [-Wdeprecated]
>      const Vec2 & normalizeExc () throw (IEX_NAMESPACE::MathExc);
>                                   ^~~~~
>
> I can disable this particular warning, of course, but it's worth noting
> that the OpenEXR code base is not C++11 compliant. But in addition to using
> some C++03 idioms that are deprecated in C++11, perhaps more importantly,
> the code is not taking advantage of new features such as move semantics,
> constexpr, nothrow, and others. For the Imath classes especially, using
> some of these may actually confer a performance benefit.
>
> I feel kind of bad pointing this out while not really having the time at
> the moment to code up and submit an actual patch myself, but I thought I'd
> at least open the topic and see where the community stands on the issue of
> how and when to upgrade to C++11 and if it's important for modern OpenEXR
> to continue to support C++03. For point of reference, the VFX Reference
> Platform [http://www.vfxplatform.com/] dictated C++11 for 2016 and 2017,
> and will be C++14 for 2018.
>
> -- lg
>
> --
> Larry Gritz
> [email protected]
>
>
>
>
>
> _______________________________________________
> Openexr-devel mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/openexr-devel
>
>
> --
> ____________________________________________________________
> _______________
> Dr. Werner Benger                Visualization Research
> Center for Computation & Technology at Louisiana State University (CCT/LSU)
> 2019  Digital Media Center, Baton Rouge, Louisiana 70803
> Tel.: +1 225 578 4809 <(225)%20578-4809>                        Fax.: +1
> 225 578-5362 <(225)%20578-5362>
>
>
> _______________________________________________
> Openexr-devel mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/openexr-devel
>
>
> --
> Larry Gritz
> [email protected]
>
>
>
>
>
> _______________________________________________
> Openexr-devel mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/openexr-devel
>
>

--94eb2c18d62ca1bd7a05566a245e
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Are there any vendors for whom this would cause an issue? =
Else, I would vote for moving things forward=C2=A0<div><br></div></div><div=
 class=3D"gmail_extra"><br><div class=3D"gmail_quote">On 10 August 2017 at =
10:18, Larry Gritz <span dir=3D"ltr">&lt;<a href=3D"mailto:[email protected]=
m" target=3D"_blank">[email protected]</a>&gt;</span> wrote:<br><blockquote=
 class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc soli=
d;padding-left:1ex"><div style=3D"word-wrap:break-word">Ugh, so it&#39;s wo=
rse than I thought.<div><br></div><div>I suppose I&#39;m willing to fix and=
 submit a patch to address this.</div><div><br></div><div>Do I need to put =
in the proper macros to make it compile on everything from C++03 through 17=
? Does anybody want to argue for continuing to maintain C++03 compatibility=
 for future OpenEXR releases, or is it finally time (six years after the C+=
+ standard and 2+ years after VFXPlatform) to raise the floor to C++11?</di=
v><div><br></div><div><span class=3D"m_6758675243403444048Apple-tab-span" s=
tyle=3D"white-space:pre-wrap">	</span>-- lg</div><div><br></div><div><div><=
div class=3D"h5"><br><div><blockquote type=3D"cite"><div>On Aug 9, 2017, at=
 11:38 PM, Werner Benger &lt;<a href=3D"mailto:[email protected]" target=
=3D"_blank">[email protected]</a>&gt; wrote:</div><br class=3D"m_675867524=
3403444048Apple-interchange-newline"><div><div>It should be noted that dyna=
mic expressions are actually forbidden in C++17, so OpenEXR does no longer =
compile with GCC 7.1 when std C++17 is enabled. The highest C++ version tha=
t can be used to compile it is C++14, where it&#39;s still just a warning, =
while in C++17 it&#39;s an error. It would be good to have OpenEXR at least=
 compilable in C++17.=C2=A0 Major C++ libraries such as QT are using C++11 =
nowadays, so it seems pretty safe to go beyond C++03 for modern application=
s, a lot of things are indeed much easier.<br><br> =C2=A0=C2=A0=C2=A0=C2=A0=
Werner<br><br><br>On 10.08.2017 00:20, Larry Gritz wrote:<br><blockquote ty=
pe=3D"cite">In a test compile with gcc 7, I get lots of errors of the follo=
wing ilk:<br><br>/home/travis/build/lgritz/<wbr>openexr/IlmBase/Imath/<wbr>=
ImathVec.h:228:34: warning: dynamic exception specifications are deprecated=
 in C++11 [-Wdeprecated]<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0const Vec2 &amp;=
 normalizeExc () throw (IEX_NAMESPACE::MathExc);<br> =C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0<wbr>=C2=A0=C2=A0=C2=A0=C2=A0^~~~~<br><br>I can disable this parti=
cular warning, of course, but it&#39;s worth noting that the OpenEXR code b=
ase is not C++11 compliant. But in addition to using some C++03 idioms that=
 are deprecated in C++11, perhaps more importantly, the code is not taking =
advantage of new features such as move semantics, constexpr, nothrow, and o=
thers. For the Imath classes especially, using some of these may actually c=
onfer a performance benefit.<br><br>I feel kind of bad pointing this out wh=
ile not really having the time at the moment to code up and submit an actua=
l patch myself, but I thought I&#39;d at least open the topic and see where=
 the community stands on the issue of how and when to upgrade to C++11 and =
if it&#39;s important for modern OpenEXR to continue to support C++03. For =
point of reference, the VFX Reference Platform [<a href=3D"http://www.vfxpl=
atform.com/" target=3D"_blank">http://www.vfxplatform.com/</a>] dictated C+=
+11 for 2016 and 2017, and will be C++14 for 2018.<br><br><span class=3D"m_=
6758675243403444048Apple-tab-span" style=3D"white-space:pre-wrap">	</span>-=
- lg<br><br>--<br>Larry Gritz<br><a href=3D"mailto:[email protected]" targe=
t=3D"_blank">[email protected]</a><br><br><br><br><br><br>_________________=
_____________<wbr>_________________<br>Openexr-devel mailing list<br><a hre=
f=3D"mailto:[email protected]" target=3D"_blank">Openexr-devel@nongn=
u.org</a><br><a href=3D"https://lists.nongnu.org/mailman/listinfo/openexr-d=
evel" target=3D"_blank">https://lists.nongnu.org/<wbr>mailman/listinfo/open=
exr-devel</a><br></blockquote><br>-- <br>______________________________<wbr=
>______________________________<wbr>_______________<br>Dr. Werner Benger =
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0Visualization Research<br>Center for Computation &amp; Techn=
ology at Louisiana State University (CCT/LSU)<br>2019 =C2=A0Digital Media C=
enter, Baton Rouge, Louisiana 70803<br>Tel.: <a href=3D"tel:(225)%20578-480=
9" value=3D"+12255784809" target=3D"_blank">+1 225 578 4809</a> =C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0Fax.: <a href=3D"tel:=
(225)%20578-5362" value=3D"+12255785362" target=3D"_blank">+1 225 578-5362<=
/a><br><br><br>______________________________<wbr>_________________<br>Open=
exr-devel mailing list<br><a href=3D"mailto:[email protected]" targe=
t=3D"_blank">[email protected]</a><br><a href=3D"https://lists.nongn=
u.org/mailman/listinfo/openexr-devel" target=3D"_blank">https://lists.nongn=
u.org/<wbr>mailman/listinfo/openexr-devel</a><br></div></div></blockquote><=
/div><br></div></div><div>
<div style=3D"word-wrap:break-word"><div style=3D"color:rgb(0,0,0);font-fam=
ily:Helvetica;font-size:14px;font-style:normal;font-variant-caps:normal;fon=
t-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text=
-transform:none;white-space:normal;word-spacing:0px">--</div><div style=3D"=
color:rgb(0,0,0);font-family:Helvetica;font-size:14px;font-style:normal;fon=
t-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:s=
tart;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0p=
x">Larry Gritz</div><div style=3D"color:rgb(0,0,0);font-family:Helvetica;fo=
nt-size:14px;font-style:normal;font-variant-caps:normal;font-weight:normal;=
letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;=
white-space:normal;word-spacing:0px"><a href=3D"mailto:[email protected]" t=
arget=3D"_blank">[email protected]</a></div><div style=3D"color:rgb(0,0,0);=
font-family:Helvetica;font-size:14px;font-style:normal;font-variant-caps:no=
rmal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:=
0px;text-transform:none;white-space:normal;word-spacing:0px"><br></div><br =
class=3D"m_6758675243403444048Apple-interchange-newline"></div><br class=3D=
"m_6758675243403444048Apple-interchange-newline">
</div>
<br></div></div><br>______________________________<wbr>_________________<br=
>
Openexr-devel mailing list<br>
<a href=3D"mailto:[email protected]">[email protected]</a><br=
>
<a href=3D"https://lists.nongnu.org/mailman/listinfo/openexr-devel" rel=3D"=
noreferrer" target=3D"_blank">https://lists.nongnu.org/<wbr>mailman/listinf=
o/openexr-devel</a><br>
<br></blockquote></div><br></div>

--94eb2c18d62ca1bd7a05566a245e--


--===============0738191178984339988==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Openexr-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/openexr-devel

--===============0738191178984339988==--