Fail to compile master with gcc 7

While compiling current master branch for openSUSE Tumbleweed (gcc 10) succeeds as expected, attempting to build for earlier openSUSE versions (gcc 7.5) fails in interesting ways:

[   32s] [  4%] Building CXX object intern/eigen/CMakeFiles/bf_intern_eigen.dir/intern/matrix.cc.o
[   32s] cd "/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/build/intern/eigen" && /usr/bin/c++  -DNDEBUG -DWITH_OPENGL -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOUR
CE -D_LARGEFILE_SOURCE -D__LITTLE_ENDIAN__ -D__MMX__ -D__SSE2__ -D__SSE__ -I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/intern/eigen" -isystem "/home/abuild/r
pmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/extern/Eigen3"  -Wredundant-decls -Wall -Wno-invalid-offsetof -Wno-sign-compare -Wlogical-op -Winit-self -Wmissing-include-dirs -
Wno-div-by-zero -Wtype-limits -Werror=return-type -Wno-char-subscripts -Wno-unknown-pragmas -Wpointer-arith -Wunused-parameter -Wwrite-strings -Wundef -Wformat-signedness -Wrestrict -Wunin
itialized -Wundef -Wmissing-declarations -Wimplicit-fallthrough=5  -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchr
onous-unwind-tables -fstack-clash-protection -g -fPIC -fopenmp -fuse-ld=gold -fopenmp -std=c++17   -msse -pipe -fPIC -funsigned-char -fno-strict-aliasing -msse2 -O2 -DNDEBUG   -o CMakeFile
s/bf_intern_eigen.dir/intern/matrix.cc.o -c "/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/intern/eigen/intern/matrix.cc"
[   32s] In file included from /usr/include/OpenImageIO/simd.h:31:0,
[   32s]                  from /usr/include/OpenImageIO/fmath.h:44,
[   32s]                  from /usr/include/OpenImageIO/hash.h:25,
[   32s]                  from /usr/include/OpenImageIO/strutil.h:23,
[   32s]                  from /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/intern/cycles/util/util_path.cpp:22:
[   32s] /usr/include/OpenEXR/ImathVec.h:228:34: error: ISO C++1z does not allow dynamic exception specifications
[   32s]      const Vec2 & normalizeExc () throw (IEX_NAMESPACE::MathExc);
[   32s]                                   ^~~~~
[   32s] /usr/include/OpenEXR/ImathVec.h:232:37: error: ISO C++1z does not allow dynamic exception specifications
[   32s]      Vec2<T>  normalizedExc () const throw (IEX_NAMESPACE::MathExc);
[   32s]                                      ^~~~~
[   32s] /usr/include/OpenEXR/ImathVec.h:440:34: error: ISO C++1z does not allow dynamic exception specifications
[   32s]      const Vec3 & normalizeExc () throw (IEX_NAMESPACE::MathExc);
[   32s]                                   ^~~~~
[   32s] /usr/include/OpenEXR/ImathVec.h:444:37: error: ISO C++1z does not allow dynamic exception specifications
[   32s]      Vec3<T>  normalizedExc () const throw (IEX_NAMESPACE::MathExc);
[   32s]                                      ^~~~~
[   32s] /usr/include/OpenEXR/ImathVec.h:622:37: error: ISO C++1z does not allow dynamic exception specifications
[   32s]      const Vec4 &    normalizeExc () throw (IEX_NAMESPACE::MathExc);
[   32s]                                      ^~~~~
[   32s] /usr/include/OpenEXR/ImathVec.h:626:44: error: ISO C++1z does not allow dynamic exception specifications

Downgrading the C++ standard to 14 (-DCMAKE_CXX_STANDARD=11). it fails with:

[  191s] cd "/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/build/source/blender/windowmanager" && /usr/bin/cc -DGLEW_NO_GLU -DNDEBUG -DWITH_AUDASPACE -DWITH_COLL
ADA -DWITH_COMPOSITOR -DWITH_FFMPEG -DWITH_GHOST_X11 -DWITH_GL_PROFILE_CORE -DWITH_INPUT_NDOF -DWITH_INTERNATIONAL -DWITH_OPENGL -DWITH_PYTHON -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE 
-D_LARGEFILE_SOURCE -D__LITTLE_ENDIAN__ -D__MMX__ -D__SSE2__ -D__SSE__ -I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/windowmanager" -I"/home/ab
uild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/windowmanager/gizmo" -I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blen
der/windowmanager/gizmo/intern" -I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/blenfont" -I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.2020070
8T021537.7fcb6bc59c8/source/blender/blenkernel" -I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/blenlib" -I"/home/abuild/rpmbuild/BUILD/blender-2
.90~git.20200708T021537.7fcb6bc59c8/source/blender/blenloader" -I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/blentranslation" -I"/home/abuild/r
pmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/compositor" -I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/depsgraph" 
-I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/editors/include" -I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/sour
ce/blender/draw" -I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/gpu" -I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8
/source/blender/imbuf" -I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/makesdna" -I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.
7fcb6bc59c8/source/blender/makesrna" -I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/nodes" -I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200
708T021537.7fcb6bc59c8/source/blender/render/extern/include" -I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/intern/clog" -I"/home/abuild/rpmbuild/BUILD/blender
-2.90~git.20200708T021537.7fcb6bc59c8/intern/ghost" -I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/intern/glew-mx" -I"/home/abuild/rpmbuild/BUILD/blender-2.90~
git.20200708T021537.7fcb6bc59c8/intern/guardedalloc" -I"/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/intern/memutil" -I"/home/abuild/rpmbuild/BUILD/blender-2.90
~git.20200708T021537.7fcb6bc59c8/source/blender/python" -isystem /usr/include/audaspace -isystem /usr/include/ffmpeg  -Wall -Wcast-align -Werror=implicit-function-declaration -Werror=retur
n-type -Werror=vla -Wstrict-prototypes -Wmissing-prototypes -Wno-char-subscripts -Wno-unknown-pragmas -Wpointer-arith -Wunused-parameter -Wwrite-strings -Wlogical-op -Wundef -Winit-self -W
missing-include-dirs -Wno-div-by-zero -Wtype-limits -Wformat-signedness -Wrestrict -Wnonnull -Wuninitialized -Wredundant-decls -Wshadow -Wno-error=unused-but-set-variable -Wimplicit-fallth
rough=5  -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -g -fPIC -fop
enmp -fuse-ld=gold -fopenmp -std=gnu11   -msse -pipe -fPIC -funsigned-char -fno-strict-aliasing -msse2 -O2 -DNDEBUG   -o CMakeFiles/bf_windowmanager.dir/intern/wm_files_link.c.o   -c "/hom
e/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/windowmanager/intern/wm_files_link.c"
[  191s] cd "/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/build" && /usr/bin/cmake -E cmake_depends "Unix Makefiles" "/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8" "/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/editors/datafiles" "/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/build" "/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/build/source/blender/editors/datafiles" "/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/build/source/blender/editors/datafiles/CMakeFiles/bf_editor_datafiles.dir/DependInfo.cmake" --color=
[  191s] In file included from /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/blenlib/BLI_array.hh:42:0,
[  191s]                  from /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/blenlib/intern/BLI_index_range.cc:20:
[  191s] /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/blenlib/BLI_memory_utils.hh: In function 'void blender::destruct_n(T*, uint)':
[  191s] /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/blenlib/BLI_memory_utils.hh:47:22: error: 'is_nothrow_destructible_v' is not a member of 'std'
[  191s]    static_assert(std::is_nothrow_destructible_v<T>,
[  191s]                       ^~~~~~~~~~~~~~~~~~~~~~~~~
[  191s] /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/blenlib/BLI_memory_utils.hh:47:22: note: suggested alternative: 'is_nothrow_destructible'
[  191s]    static_assert(std::is_nothrow_destructible_v<T>,
[  191s]                       ^~~~~~~~~~~~~~~~~~~~~~~~~
[  191s]                       is_nothrow_destructible
[  191s] /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/blenlib/BLI_memory_utils.hh:47:49: error: expected primary-expression before '>' token
[  191s]    static_assert(std::is_nothrow_destructible_v<T>,
[  191s]                                                  ^
[  191s] /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/blenlib/BLI_memory_utils.hh:47:50: error: expected primary-expression before ',' token
[  191s]    static_assert(std::is_nothrow_destructible_v<T>,
[  191s]                                                   ^
[  191s] /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/blenlib/BLI_memory_utils.hh: In function 'void blender::uninitialized_move_n(T*, uint, T*)':
[  191s] /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/blenlib/BLI_memory_utils.hh:170:22: error: 'is_nothrow_move_constructible_v' is not a member of 'std'
[  191s]    static_assert(std::is_nothrow_move_constructible_v<T>,
[  191s]                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[  191s] /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/blenlib/BLI_memory_utils.hh:170:22: note: suggested alternative: 'is_nothrow_move_constructible'
[  191s]    static_assert(std::is_nothrow_move_constructible_v<T>,
[  191s]                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[  191s]                       is_nothrow_move_constructible
[  191s] /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/source/blender/blenlib/BLI_memory_utils.hh:170:55: error: expected primary-expression before '>' token

and downgrading to 11 (-DCMAKE_CXX_STANDARD=11). it fails with:

[   40s] [  8%] Linking CXX static library ../../lib/libbf_intern_rigidbody.a
[   40s] cd "/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/build/intern/rigidbody" && /usr/bin/cmake -P CMakeFiles/bf_intern_rigidbody.dir/cmake_clean_target.cma
ke
[   40s] cd "/home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/build/intern/rigidbody" && /usr/bin/cmake -E cmake_link_script CMakeFiles/bf_intern_rigidbody.dir/link.txt --verbose=1
[   40s] In file included from /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/extern/ceres/include/ceres/internal/parameter_dims.h:37:0,
[   40s]                  from /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/extern/ceres/include/ceres/internal/autodiff.h:151,
[   40s]                  from /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/extern/ceres/include/ceres/autodiff_cost_function.h:130,
[   40s]                  from /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/extern/ceres/include/ceres/ceres.h:37,
[   40s]                  from /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/intern/libmv/libmv/multiview/fundamental.cc:23:
[   40s] /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/extern/ceres/include/ceres/internal/integer_sequence_algorithm.h:64:21: error: 'integer_sequence' is not a member of 'std'
[   40s]  struct SumImpl<std::integer_sequence<T, N, Ns...>> {
[   40s]                      ^~~~~~~~~~~~~~~~
[   40s] /usr/bin/ar qc ../../lib/libbf_intern_rigidbody.a  CMakeFiles/bf_intern_rigidbody.dir/rb_bullet_api.cpp.o
[   40s] /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/extern/ceres/include/ceres/internal/integer_sequence_algorithm.h:64:21: error: 'integer_sequence' is not a member of 'std'
[   40s] /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/extern/ceres/include/ceres/internal/integer_sequence_algorithm.h:64:46: error: wrong number of template arguments (3, should be 1)
[   40s]  struct SumImpl<std::integer_sequence<T, N, Ns...>> {
[   40s]                                               ^~~
[   40s] /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/extern/ceres/include/ceres/internal/integer_sequence_algorithm.h:60:8: note: provided for 'template<class Seq> struct ceres::internal::SumImpl'
[   40s]  struct SumImpl;
[   40s]         ^~~~~~~
[   40s] /home/abuild/rpmbuild/BUILD/blender-2.90~git.20200708T021537.7fcb6bc59c8/extern/ceres/include/ceres/internal/integer_sequence_algorithm.h:64:49: error: expected unqualified-id before '>' token

More ideas anybody?

Blender master is C++17 now and downgrading will not work. We also bumped the minimum required compiler version to 9.3.1:
https://wiki.blender.org/wiki/Building_Blender#Compiler_Versions

Further, perhaps the OpenEXR library is not the latest? We use 2.4.0 for official builds.

I’m not sure how this works in general with OpenSUSE Tumbleweed, latest Blender requires recent compiler and library versions.

Thanks for the qualified response, Brecht. Much appreciated.

You hit the nail: I missed to provide a sufficiently new OpenEXR library. While at it, I’m building these targets with gcc9 now.