[Bug c++/113308] New: derived class doesn't currently allow inherited explicit object member function post increment operator
cooky.ykooc922 at gmail dot com
gcc-bugzilla@gcc.gnu.org
Wed Jan 10 12:40:18 GMT 2024
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113308
Bug ID: 113308
Summary: derived class doesn't currently allow inherited
explicit object member function post increment
operator
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: cooky.ykooc922 at gmail dot com
Target Milestone: ---
With the recent support of explicit object parameter functions, inheriting
explicit object member functions from base class seems to work except for post
increment operator 'operator++(int)'.
struct add_fn
{
template <typename Self>
Self operator++(this Self&& self, int)
{
auto temp = self;
++self;
return temp;
}
};
struct A : add_fn
{
int n;
A(int n) : n(n) {}
A& operator++()
{
++n;
return *this;
}
// this doesn't work either:
// A& operator++(this A& self)
// {
// ++self.n;
// return self;
// }
};
int main()
{
A a { 5 };
++a; // ok
a++; // error: no 'operator++(int)' declared for postfix '++'
}
godbolt link: https://godbolt.org/z/1h57Thvds
More information about the Gcc-bugs
mailing list