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

Larry Gritz <[email protected]> Thu, 10 Aug 2017 10:18:31 -0700
Newsgroups gmane.comp.video.openexr.devel
Message-ID <[email protected]>
--===============5452419802731800745==
Content-Type: multipart/alternative;
 boundary="Apple-Mail=_F263BD48-53DB-47E1-85AA-CFC41C28F038"


--Apple-Mail=_F263BD48-53DB-47E1-85AA-CFC41C28F038
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

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:
>=20
> 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.
>=20
>     Werner
>=20
>=20
> 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:
>>=20
>> /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);
>>                                   ^~~~~
>>=20
>> 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.
>>=20
>> 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.
>>=20
>> 	-- lg
>>=20
>> --
>> Larry Gritz
>> [email protected]
>>=20
>>=20
>>=20
>>=20
>>=20
>> _______________________________________________
>> Openexr-devel mailing list
>> [email protected]
>> https://lists.nongnu.org/mailman/listinfo/openexr-devel
>=20
> --=20
> =
__________________________________________________________________________=
_
> 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                        Fax.: +1 225 578-5362
>=20
>=20
> _______________________________________________
> Openexr-devel mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/openexr-devel

--
Larry Gritz
[email protected]





--Apple-Mail=_F263BD48-53DB-47E1-85AA-CFC41C28F038
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" =
class=3D"">Ugh, so it's worse than I thought.<div class=3D""><br =
class=3D""></div><div class=3D"">I suppose I'm willing to fix and submit =
a patch to address this.</div><div class=3D""><br class=3D""></div><div =
class=3D"">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?</div><div class=3D""><br =
class=3D""></div><div class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>-- lg</div><div class=3D""><br =
class=3D""></div><div class=3D""><br class=3D""><div><blockquote =
type=3D"cite" class=3D""><div class=3D"">On Aug 9, 2017, at 11:38 PM, =
Werner Benger &lt;<a href=3D"mailto:[email protected]" =
class=3D"">[email protected]</a>&gt; wrote:</div><br =
class=3D"Apple-interchange-newline"><div class=3D""><div class=3D"">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. &nbsp;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.<br class=3D""><br class=3D""> =
&nbsp;&nbsp;&nbsp;&nbsp;Werner<br class=3D""><br class=3D""><br =
class=3D"">On 10.08.2017 00:20, Larry Gritz wrote:<br =
class=3D""><blockquote type=3D"cite" class=3D"">In a test compile with =
gcc 7, I get lots of errors of the following ilk:<br class=3D""><br =
class=3D"">/home/travis/build/lgritz/openexr/IlmBase/Imath/ImathVec.h:228:=
34: warning: dynamic exception specifications are deprecated in C++11 =
[-Wdeprecated]<br class=3D""> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const Vec2 =
&amp; normalizeExc () throw (IEX_NAMESPACE::MathExc);<br class=3D""> =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^~~~~<br =
class=3D""><br class=3D"">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.<br class=3D""><br class=3D"">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 [<a href=3D"http://www.vfxplatform.com/" =
class=3D"">http://www.vfxplatform.com/</a>] dictated C++11 for 2016 and =
2017, and will be C++14 for 2018.<br class=3D""><br class=3D""><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>-- lg<br =
class=3D""><br class=3D"">--<br class=3D"">Larry Gritz<br class=3D""><a =
href=3D"mailto:[email protected]" class=3D"">[email protected]</a><br =
class=3D""><br class=3D""><br class=3D""><br class=3D""><br class=3D""><br=
 class=3D"">_______________________________________________<br =
class=3D"">Openexr-devel mailing list<br =
class=3D"">[email protected]<br =
class=3D"">https://lists.nongnu.org/mailman/listinfo/openexr-devel<br =
class=3D""></blockquote><br class=3D"">-- <br =
class=3D"">_______________________________________________________________=
____________<br class=3D"">Dr. Werner Benger =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;Visualization Research<br class=3D"">Center for =
Computation &amp; Technology at Louisiana State University (CCT/LSU)<br =
class=3D"">2019 &nbsp;Digital Media Center, Baton Rouge, Louisiana =
70803<br class=3D"">Tel.: +1 225 578 4809 =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fax.: +1 =
225 578-5362<br class=3D""><br class=3D""><br =
class=3D"">_______________________________________________<br =
class=3D"">Openexr-devel mailing list<br class=3D""><a =
href=3D"mailto:[email protected]" =
class=3D"">[email protected]</a><br =
class=3D"">https://lists.nongnu.org/mailman/listinfo/openexr-devel<br =
class=3D""></div></div></blockquote></div><br class=3D""><div class=3D"">
<div style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; =
-webkit-line-break: after-white-space;" class=3D""><div style=3D"color: =
rgb(0, 0, 0); font-family: Helvetica; font-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; -webkit-text-stroke-width: =
0px;">--</div><div style=3D"color: rgb(0, 0, 0); font-family: Helvetica; =
font-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; -webkit-text-stroke-width: 0px;">Larry =
Gritz</div><div style=3D"color: rgb(0, 0, 0); font-family: Helvetica; =
font-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; -webkit-text-stroke-width: 0px;"><a =
href=3D"mailto:[email protected]" =
class=3D"">[email protected]</a></div><div style=3D"color: rgb(0, 0, 0); =
font-family: Helvetica; font-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; -webkit-text-stroke-width: 0px;" class=3D""><br=
 class=3D""></div><br class=3D"Apple-interchange-newline"></div><br =
class=3D"Apple-interchange-newline">
</div>
<br class=3D""></div></body></html>=

--Apple-Mail=_F263BD48-53DB-47E1-85AA-CFC41C28F038--


--===============5452419802731800745==
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

--===============5452419802731800745==--