[Bug c++/96179] [10/11 Regression] g++-10.1 silently doesn't push_back the return of a void function

redi at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Jul 13 09:08:55 GMT 2020


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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |10.2
                 CC|                            |mpolacek at gcc dot gnu.org
            Summary|g++-10.1 silently doesn't   |[10/11 Regression] g++-10.1
                   |push_back the return of a   |silently doesn't push_back
                   |void function               |the return of a void
                   |                            |function
     Ever confirmed|0                           |1
      Known to work|                            |9.3.1
           Keywords|                            |accepts-invalid
      Known to fail|                            |10.1.1, 11.0
   Last reconfirmed|                            |2020-07-13
             Status|UNCONFIRMED                 |NEW

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Confirmed. This started with r10-7096 (like PR 95789).

A reduced example shows that GCC even warns the vector variable is unused:

template<typename T> struct vector
{
  void push_back(T) { }
};

struct dummy{
        int a;
};

void Modify_Dummy(dummy &d){
        d.a=1;
}

template <bool bla=true> void Templated_Function(){
        vector<dummy> A;
        A.push_back(Modify_Dummy(dummy{0}));
}

int main(){
        Templated_Function();
}


96179.C: In instantiation of 'void Templated_Function() [with bool bla =
true]':
96179.C:20:28:   required from here
96179.C:15:23: warning: variable 'A' set but not used
[-Wunused-but-set-variable]
   15 |         vector<dummy> A;
      |                       ^


More information about the Gcc-bugs mailing list