|
From: | Piotr Stanczyk |
Subject: | Re: [Openexr-devel] C++11, 'throw', etc. |
Date: | Thu, 10 Aug 2017 11:12:44 -0700 |
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?-- lgOn Aug 9, 2017, at 11:38 PM, Werner Benger <address@hidden> 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
address@hidden
_______________________________________________
Openexr-devel mailing list
address@hidden
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 Fax.: +1 225 578-5362
_______________________________________________
Openexr-devel mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/openexr-devel
_______________________________________________
Openexr-devel mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/openexr-devel
[Prev in Thread] | Current Thread | [Next in Thread] |