[Boost-bugs] [Boost C++ Libraries] #12378: Compilation errors with clang 3.8

Subject: [Boost-bugs] [Boost C++ Libraries] #12378: Compilation errors with clang 3.8
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2016-08-03 13:12:39


#12378: Compilation errors with clang 3.8
-------------------------------------------+---------------------
 Reporter: Daniel Laügt <daniel.laugt@…> | Owner: rogeeff
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: test
  Version: Boost 1.61.0 | Severity: Problem
 Keywords: |
-------------------------------------------+---------------------
 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<nfp::typed_keyword<cstring,struct
 description_t>>::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<nfp::typed_keyword<cstring,struct
 description_t>>::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<nfp::typed_keyword<cstring,struct
 help_t>>::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<nfp::typed_keyword<cstring,struct
 help_t>>::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<nfp::typed_keyword<cstring,struct
 env_var_t>>::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<nfp::typed_keyword<cstring,struct
 env_var_t>>::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<nfp::typed_keyword<cstring,struct
 end_of_params_t>>::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<nfp::typed_keyword<cstring,struct
 end_of_params_t>>::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<nfp::typed_keyword<cstring,struct
 neg_prefix_t>>::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<nfp::typed_keyword<cstring,struct
 neg_prefix_t>>::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<nfp::typed_keyword<cstring,struct
 value_hint_t>>::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<nfp::typed_keyword<cstring,struct
 value_hint_t>>::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<nfp::keyword<struct optional_value_t>>::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<nfp::keyword<struct optional_value_t>>::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<nfp::keyword<struct default_value_t>>::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<nfp::keyword<struct default_value_t>>::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<nfp::keyword<struct callback_t>>::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<nfp::keyword<struct callback_t>>::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<std::initializer_list<std::pair<const
 cstring,EnumType>>, 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<std::initializer_list<std::pair<const
 cstring,EnumType>>, 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<std::initializer_list<std::pair<const
 cstring,EnumType>>, struct enum_values_t>
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
 ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:52:78:
 error: expected a type
   nfp::typed_keyword<std::initializer_list<std::pair<const
 cstring,EnumType>>, struct enum_values_t>
 ^
 ../../../../../tools/boost/boost/test/utils/runtime/modifier.hpp:52:101:
 error: expected ';' after alias declaration
   nfp::typed_keyword<std::initializer_list<std::pair<const
 cstring,EnumType>>, 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<std::pair<cstring,EnumType> > const& values =
 m[enum_values<EnumType>::value];
                                                                     ^
 ../../../../../tools/boost/boost/test/utils/runtime/argument_factory.hpp:137:81:
 error: 'EnumType' does not refer to a value
         std::vector<std::pair<cstring,EnumType> > const& values =
 m[enum_values<EnumType>::value];
 ^
 ../../../../../tools/boost/boost/test/utils/runtime/argument_factory.hpp:127:19:
 note: declared here
 template<typename EnumType>
                   ^
 ../../../../../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<std::pair<cstring,EnumType> > const& values =
 m[enum_values<EnumType>::value];
 ^~~~~~~
 values
 ../../../../../tools/boost/boost/test/utils/runtime/argument_factory.hpp:137:58:
 note: 'values' declared here
         std::vector<std::pair<cstring,EnumType> > const& values =
 m[enum_values<EnumType>::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<typename Modifiers=nfp::no_params_type>
                       ^ ~~~~~~~~~~~~~~~~~~~
 ../../../../../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<typename Modifiers=nfp::no_params_type>
                       ^ ~~~~~~~~~~~~~~~~~~~
 ../../../../../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<typename Modifiers=nfp::no_params_type>
                       ^ ~~~~~~~~~~~~~~~~~~~
 ../../../../../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<EnumType>::value];
         ^
 ../../../../../tools/boost/boost/test/utils/runtime/parameter.hpp:377:32:
 error: use of undeclared identifier 'enum_values'
         auto const& values = m[enum_values<EnumType>::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<EnumType>::value];
                                            ^
 ../../../../../tools/boost/boost/test/utils/runtime/parameter.hpp:362:19:
 note: declared here
 template<typename EnumType, args_amount a = runtime::OPTIONAL_PARAM>

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/12378>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:20 UTC