[x265] Dynamic HDR10 routines don't compile in GCC 6.3.0, missing C++11 compatibility

Mario *LigH* Rohkrämer contact at ligh.de
Thu Apr 20 17:03:33 CEST 2017


Here a longer excerpt of the result of the following call (building the  
12-bit depth library for a 32-bit multilib EXE, the first part in my  
semi-automatical build script, test version with added dynamicHDR10  
support):

cmake -G "MSYS Makefiles" ../../../source -DWINXP_SUPPORT=ON  
-DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF  
-DENABLE_ASSEMBLY=OFF -DHIGH_BIT_DEPTH=ON -DMAIN12=ON  
-DENABLE_DYNAMIC_HDR10=ON

+----
...
[ 54%] Built target common
[ 56%] Building CXX object  
dynamicHDR10/CMakeFiles/dynamicHDR10.dir/json11/json11.cpp.obj
In file included from  
h:\msys-gcc630\mingw\include\c++\6.3.0\initializer_list:36:0,
                  from  
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:57,
                  from  
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.cpp:22:
h:\msys-gcc630\mingw\include\c++\6.3.0\bits\c++0x_warning.h:32:2: error:  
#error This file requires compiler and library support for the ISO C++  
2011 standard. This support must be enabled with the -std=c++11 or  
-std=gnu++11 compiler options.
  #error This file requires compiler and library support \
   ^~~~~
In file included from  
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.cpp:22:0:
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:91:5:  
warning: identifier 'noexcept' is a keyword in C++11 [-Wc++11-compat]
      Json() noexcept;                // NUL
      ^~~~
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:106:5:  
warning: identifier 'decltype' is a keyword in C++11 [-Wc++11-compat]
      template <class T, class = decltype(&T::to_json)>
      ^~~~~~~~
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:176:13:  
warning: identifier 'nullptr' is a keyword in C++11 [-Wc++11-compat]
              return nullptr;
              ^~~~~~
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:79:7:  
warning: override controls (override/final) only available with -std=c++11  
or -std=gnu++11
  class Json  final{ //final
        ^~~~
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:91:10:  
error: expected ';' at end of member declaration
      Json() noexcept;                // NUL
           ^
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:91:12:  
error: 'noexcept' does not name a type
      Json() noexcept;                // NUL
             ^~~~~~~~
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:91:12:  
note: C++11 'noexcept' only available with -std=c++11 or -std=gnu++11
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:92:24:  
error: invalid use of '::'
      Json(std::nullptr_t) noexcept;  // NUL
                         ^
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:92:24:  
error: expected ';' at end of member declaration
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:92:26:  
error: 'noexcept' does not name a type
      Json(std::nullptr_t) noexcept;  // NUL
                           ^~~~~~~~
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:92:26:  
note: C++11 'noexcept' only available with -std=c++11 or -std=gnu++11
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:97:22:  
error: expected ',' or '...' before '&&' token
      Json(std::string &&value);      // STRING
                       ^~
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:100:16:  
error: expected ',' or '...' before '&&' token
      Json(array &&values);           // ARRAY
                 ^~
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:102:17:  
error: expected ',' or '...' before '&&' token
      Json(object &&values);          // OBJECT
                  ^~
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:106:32:  
error: expected type-specifier before 'decltype'
      template <class T, class = decltype(&T::to_json)>
                                 ^~~~~~~~
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:106:32:  
error: expected '>' before 'decltype'
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:107:21:  
error: default template arguments may not be used in function templates  
without -std=c++11 or -std=gnu++11
      Json(const T & t) : Json(t.to_json()) {}
                      ^
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:110:38:  
error: 'enable_if' in namespace 'std' does not name a template type
      template <class M, typename std::enable_if<
                                       ^~~~~~~~~
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:110:47:  
error: expected '>' before '<' token
      template <class M, typename std::enable_if<
                                                ^
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:114:5:  
error: 'template<class M, <typeprefixerror><anonymous> >  
json11::Json::Json(const M&)' cannot be overloaded
      Json(const M & m) : Json(object(m.begin(), m.end())) {}
      ^~~~
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:107:5:  
error: with 'template<class T, class> json11::Json::Json(const T&)'
      Json(const T & t) : Json(t.to_json()) {}
      ^~~~
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:117:38:  
error: 'enable_if' in namespace 'std' does not name a template type
      template <class V, typename std::enable_if<
                                       ^~~~~~~~~
h:/MSYS-GCC630/home/Entwicklung/x265/source/dynamicHDR10/json11/json11.h:117:47:  
error: expected '>' before '<' token
      template <class V, typename std::enable_if<
                                                ^
...
+----

and a few more pages following; eventually the result:

+----
make[2]: ***  
[dynamicHDR10/CMakeFiles/dynamicHDR10.dir/json11/json11.cpp.obj] Error 1
make[1]: *** [dynamicHDR10/CMakeFiles/dynamicHDR10.dir/all] Error 2
make: *** [all] Error 2
+----

-- 

Fun and success!
Mario *LigH* Rohkrämer
mailto:contact at ligh.de
 


More information about the x265-devel mailing list