Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compiler error with GCC 11.3: template argument deduction failed #296

Open
carlosgalvezp opened this issue Jun 22, 2022 · 0 comments
Open

Comments

@carlosgalvezp
Copy link

Hi!

I'm using commit 8fafda4 of rapidcheck, building on C++14 mode. When trying to bump the compiler to GCC 11.3.0 (from GCC 7.5.0) I get the following compile error:

external/rapidcheck/include/rapidcheck/seq/Create.hpp: In lambda function:
external/rapidcheck/include/rapidcheck/seq/Create.hpp:189:16: error: no matching function for call to 'map(rc::Seq<long unsigned int>, rc::seq::subranges(std::size_t, std::size_t)::<lambda(std::size_t)>::<lambda(std::size_t)>)'
  189 |                        return seq::map(
      |                ^       ~~~~~~~~~~~~~~~~
  190 |                            seq::range<std::size_t>(start, end - rangeSize + 1),
      |                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  191 |                            [=](std::size_t rangeStart) {
      |                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  192 |                              return std::make_pair(rangeStart,
      |                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  193 |                                                    rangeStart + rangeSize);
      |                                                    ~~~~~~~~~~~~~~~~~~~~~~~~
  194 |                            });
      |                 
external/rapidcheck/include/rapidcheck/seq/Transform.hpp:329:1: note: candidate: 'template<class T, class Mapper> rc::Seq<typename std::decay<typename std::result_of<Mapper(T, ...)>::type>::type> rc::seq::map(rc::Seq<T>, Mapper&&)'
  329 | Seq<Decay<typename rc::compat::return_type<Mapper,T>::type>> map(Seq<T> seq,
      | ^~~
external/rapidcheck/include/rapidcheck/seq/Transform.hpp:329:1: note:   template argument deduction/substitution failed:
external/rapidcheck/include/rapidcheck/seq/Transform.hpp: In substitution of 'template<class T, class Mapper> rc::Seq<typename std::decay<typename std::result_of<Mapper(T, ...)>::type>::type> rc::seq::map(rc::Seq<T>, Mapper&&) [with T = long unsigned int; Mapper = rc::seq::subranges(std::size_t, std::size_t)::<lambda(std::size_t)>::<lambda(std::size_t)>]':
external/rapidcheck/include/rapidcheck/seq/Create.hpp:189:16:   required from here
external/rapidcheck/include/rapidcheck/seq/Transform.hpp:329:1: error: invalid use of incomplete type 'struct std::result_of<rc::seq::subranges(std::size_t, std::size_t)::<lambda(std::size_t)>::<lambda(std::size_t)>(long unsigned int, ...)>'
external/gcc_x86/gcc-install/bin/../lib/gcc/x86_64-pc-linux-gnu/11.3.0/../../../../include/c++/11.3.0/type_traits:2372:36: note: declaration of 'struct std::result_of<rc::seq::subranges(std::size_t, std::size_t)::<lambda(std::size_t)>::<lambda(std::size_t)>(long unsigned int, ...)>'
 2372 |   template<typename _Signature>
      |                                    ^        

This happens when calling the function rc::gen::inRange<int>(0, N).

Do you have any feeling for what might be going on? Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant