public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/113308] New: derived class doesn't currently allow inherited explicit object member function post increment operator
@ 2024-01-10 12:40 cooky.ykooc922 at gmail dot com
  2024-01-10 13:33 ` [Bug c++/113308] " nathanieloshead at gmail dot com
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: cooky.ykooc922 at gmail dot com @ 2024-01-10 12:40 UTC (permalink / raw)
  To: gcc-bugs

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-01-11 21:46 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-10 12:40 [Bug c++/113308] New: derived class doesn't currently allow inherited explicit object member function post increment operator cooky.ykooc922 at gmail dot com
2024-01-10 13:33 ` [Bug c++/113308] " nathanieloshead at gmail dot com
2024-01-10 17:55 ` waffl3x at protonmail dot com
2024-01-10 18:20 ` waffl3x at protonmail dot com
2024-01-11 21:46 ` redi at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).