id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 12378,Compilation errors with clang 3.8,Daniel Laügt ,Raffi Enficiaud,"Clang 3.8 without c++11 option gives compilation errors. For this clang configuration, BOOST_NO_CXX11_HDR_INITIALIZER_LIST is defined. This should be checked for using the new test api as it uses std::initialize_list. I've attached a proposal patch fixing the issue. make[1]: Entering directory `/work/home/phoenix/jenkins/workspace/7.4-code-analysis-clang/tools/boost/libs/test/build' Compiling unit_test_parameters.o... In file included from ../src/unit_test_parameters.cpp:16: In file included from ../../../../../tools/boost/boost/test/impl/unit_test_parameters.ipp:35: In file included from ../../../../../tools/boost/boost/test/utils/runtime/parameter.hpp:20: ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:40:1: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions] auto const& description = unit_test::static_constant>::value; ^ ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:40:105: error: a space is required between consecutive right angle brackets (use '> >') auto const& description = unit_test::static_constant>::value; ^~ > > ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:41:1: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions] auto const& help = unit_test::static_constant>::value; ^ ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:41:98: error: a space is required between consecutive right angle brackets (use '> >') auto const& help = unit_test::static_constant>::value; ^~ > > ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:42:1: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions] auto const& env_var = unit_test::static_constant>::value; ^ ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:42:101: error: a space is required between consecutive right angle brackets (use '> >') auto const& env_var = unit_test::static_constant>::value; ^~ > > ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:43:1: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions] auto const& end_of_params = unit_test::static_constant>::value; ^ ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:43:107: error: a space is required between consecutive right angle brackets (use '> >') auto const& end_of_params = unit_test::static_constant>::value; ^~ > > ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:44:1: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions] auto const& negation_prefix = unit_test::static_constant>::value; ^ ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:44:104: error: a space is required between consecutive right angle brackets (use '> >') auto const& negation_prefix = unit_test::static_constant>::value; ^~ > > ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:45:1: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions] auto const& value_hint = unit_test::static_constant>::value; ^ ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:45:104: error: a space is required between consecutive right angle brackets (use '> >') auto const& value_hint = unit_test::static_constant>::value; ^~ > > ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:46:1: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions] auto const& optional_value = unit_test::static_constant>::value; ^ ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:46:94: error: a space is required between consecutive right angle brackets (use '> >') auto const& optional_value = unit_test::static_constant>::value; ^~ > > ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:47:1: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions] auto const& default_value = unit_test::static_constant>::value; ^ ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:47:93: error: a space is required between consecutive right angle brackets (use '> >') auto const& default_value = unit_test::static_constant>::value; ^~ > > ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:48:1: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions] auto const& callback = unit_test::static_constant>::value; ^ ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:48:88: error: a space is required between consecutive right angle brackets (use '> >') auto const& callback = unit_test::static_constant>::value; ^~ > > ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:51:21: warning: alias declarations are a C++11 extension [-Wc++11-extensions] using enum_values = unit_test::static_constant< ^ ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:52:27: error: no member named 'initializer_list' in namespace 'std' nfp::typed_keyword>, struct enum_values_t> ~~~~~^ ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:52:76: error: a space is required between consecutive right angle brackets (use '> >') nfp::typed_keyword>, struct enum_values_t> ^~ > > ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:52:77: error: expected '(' for function-style cast or type construction nfp::typed_keyword>, struct enum_values_t> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:52:78: error: expected a type nfp::typed_keyword>, struct enum_values_t> ^ ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:52:101: error: expected ';' after alias declaration nfp::typed_keyword>, struct enum_values_t> ^ ; In file included from ../src/unit_test_parameters.cpp:16: In file included from ../../../../../tools/boost/boost/test/impl/unit_test_parameters.ipp:35: In file included from ../../../../../tools/boost/boost/test/utils/runtime/parameter.hpp:22: ../../../../../tools/boost/boost/test/utils/runtime/argument_factory.hpp:137:69: error: use of undeclared identifier 'enum_values' std::vector > const& values = m[enum_values::value]; ^ ../../../../../tools/boost/boost/test/utils/runtime/argument_factory.hpp:137:81: error: 'EnumType' does not refer to a value std::vector > const& values = m[enum_values::value]; ^ ../../../../../tools/boost/boost/test/utils/runtime/argument_factory.hpp:127:19: note: declared here template ^ ../../../../../tools/boost/boost/test/utils/runtime/argument_factory.hpp:137:90: error: no member named 'value' in the global namespace; did you mean 'values'? std::vector > const& values = m[enum_values::value]; ^~~~~~~ values ../../../../../tools/boost/boost/test/utils/runtime/argument_factory.hpp:137:58: note: 'values' declared here std::vector > const& values = m[enum_values::value]; ^ In file included from ../src/unit_test_parameters.cpp:16: In file included from ../../../../../tools/boost/boost/test/impl/unit_test_parameters.ipp:35: ../../../../../tools/boost/boost/test/utils/runtime/parameter.hpp:256:23: warning: default template arguments for a function template are a C++11 extension [-Wc++11-extensions] template ^ ~~~~~~~~~~~~~~~~~~~ ../../../../../tools/boost/boost/test/utils/runtime/parameter.hpp:302:23: warning: default template arguments for a function template are a C++11 extension [-Wc++11-extensions] template ^ ~~~~~~~~~~~~~~~~~~~ ../../../../../tools/boost/boost/test/utils/runtime/parameter.hpp:368:23: warning: default template arguments for a function template are a C++11 extension [-Wc++11-extensions] template ^ ~~~~~~~~~~~~~~~~~~~ ../../../../../tools/boost/boost/test/utils/runtime/parameter.hpp:377:9: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions] auto const& values = m[enum_values::value]; ^ ../../../../../tools/boost/boost/test/utils/runtime/parameter.hpp:377:32: error: use of undeclared identifier 'enum_values' auto const& values = m[enum_values::value]; ^ ../../../../../tools/boost/boost/test/utils/runtime/parameter.hpp:377:44: error: 'EnumType' does not refer to a value auto const& values = m[enum_values::value]; ^ ../../../../../tools/boost/boost/test/utils/runtime/parameter.hpp:362:19: note: declared here template ",Bugs,closed,Boost 1.62.0,test,Boost 1.61.0,Problem,fixed,,