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"><<a href=3D"mailto:[email protected]= m" target=3D"_blank">[email protected]</a>></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's wo= rse than I thought.<div><br></div><div>I suppose I'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 <<a href=3D"mailto:[email protected]" target= =3D"_blank">[email protected]</a>> 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'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.=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 &= 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'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'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 [<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 & 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==--