[Bug c++/94489] ICE: unexpected expression ‘std::min’ of kind overload

mpolacek at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Apr 6 20:30:50 GMT 2020


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94489

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mpolacek at gcc dot gnu.org
           Keywords|ice-on-valid-code           |ice-on-invalid-code,
                   |                            |needs-reduction

--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Doesn't seem like valid code; clang++ trunk also rejects it:
94489.C:28:61: error: no matching constructor for initialization of
'std::plus<void>'

I think the fix should be

--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -3748,6 +3748,7 @@ expand_integer_pack (tree call, tree args, tsubst_flags_t
complain,
     }
   else
     {
+      hi = instantiate_non_dependent_expr_sfinae (hi, complain);
       hi = cxx_constant_value (hi);
       int len = valid_constant_size_p (hi) ? tree_to_shwi (hi) : -1;


but it'd be nice to have a reduced version.


More information about the Gcc-bugs mailing list