Skip to content

Build error for 32bit in named_parameters.cpp #449

@thorsten-klein

Description

@thorsten-klein

Expected Behavior

Compilation finishes successful

Actual Behavior

Build is failing with following errors:

In file included from named_parameters.cpp:11:0:
/home/default/work/di/extension/include/boost/di/extension/injections/named_parameters.hpp: In instantiation of ‘struct boost::di::v1_1_0::extension::parse<example::boost_di_inject__, int, 2>’:
/home/default/work/di/extension/include/boost/di/extension/injections/named_parameters.hpp:97:69:   required from ‘struct boost::di::v1_1_0::extension::args_impl<example::boost_di_inject__, boost::di::v1_1_0::aux::index_sequence<0, 1, 2>, int, std::unique_ptr<interface, std::default_delete<interface> >, int>’
/home/default/work/di/extension/include/boost/di/extension/injections/named_parameters.hpp:105:97:   required from ‘struct boost::di::v1_1_0::extension::args__<true, example::boost_di_inject__, int, std::unique_ptr<interface, std::default_delete<interface> >, int>’
/home/default/work/di/extension/include/boost/di/extension/injections/named_parameters.hpp:115:69:   required from ‘struct boost::di::v1_1_0::extension::args<example::boost_di_inject__ (*)(int, std::unique_ptr<interface>, int)>’
/home/default/work/di/extension/include/boost/di/extension/injections/named_parameters.hpp:124:38:   required by substitution of ‘template<class T> using args_t = typename boost::di::v1_1_0::extension::args::type [with T = example::boost_di_inject__ (*)(int, std::unique_ptr<interface>, int)]’
named_parameters.cpp:29:3:   required from here
/home/default/work/di/extension/include/boost/di/extension/injections/named_parameters.hpp:89:120: error: overflow in constant expression [-fpermissive]
                                   named<aux::integral_constant<long, const_hash(&T::str[name.begin], name.end)>, TArg>>;
                                                                                                                        ^
/home/default/work/di/extension/include/boost/di/extension/injections/named_parameters.hpp:89:120: note: in template argument for type ‘long int’ 
/home/default/work/di/extension/include/boost/di/extension/injections/named_parameters.hpp: In instantiation of ‘constexpr auto boost::di::v1_1_0::extension::operator""_s() [with T = char; T ...Chars = {'m', 'y', '_', 'v', 'a', 'l', 'u', 'e'}]’:
named_parameters.cpp:44:27:   required from here
/home/default/work/di/extension/include/boost/di/extension/injections/named_parameters.hpp:52:92: error: overflow in constant expression [-fpermissive]
   return aux::integral_constant<long, const_hash(chars<Chars...>{}, sizeof...(Chars) + 1)>{};
                                                                                            ^
/home/default/work/di/extension/include/boost/di/extension/injections/named_parameters.hpp:52:92: note: in template argument for type ‘long int’ 
named_parameters.cpp: In function ‘int main()’:
named_parameters.cpp:44:39: error: invalid use of void expression
     , di::bind<int>.named("my_value"_s).to(87)
                                       ^
named_parameters.cpp:48:26: error: expected primary-expression before ‘>’ token
   injector.create<example>();
                          ^
named_parameters.cpp:48:28: error: expected primary-expression before ‘)’ token
   injector.create<example>();

Steps to Reproduce the Problem

Compile single file extension/test/injections/named_parameters.cpp

  1. 64bit (OK)
    g++ -m64 named_parameters.cpp -I $PWD/../../include -I $PWD/../../../include -std=c++14
  2. 32bit (FAILS)
    g++ -m32 named_parameters.cpp -I $PWD/../../include -I $PWD/../../../include -std=c++14

Specifications

  • Version: 1.1.0
  • Platform: Ubuntu 16.04.6 LTS 64bit
  • g++ version 5.5.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions