https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114561
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- Further reduced: void create(void* u) { const void* const& r = ( (void)0, u ); } void test_func() { create(0); } The result of (0, u) is an lvalue of type void* which should then be converted to a const void* prvalue, which is then bound to the reference.