From: Simon Marchi <simon.marchi@efficios.com>
To: Tom Tromey <tom@tromey.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH 1/3] gdb/objfiles: make objfile::sections yield references
Date: Fri, 29 Aug 2025 11:47:11 -0400 [thread overview]
Message-ID: <c214affe-0b65-430b-bbd7-7be987f5680a@efficios.com> (raw)
In-Reply-To: <87a53iuu9d.fsf@tromey.com>
On 2025-08-29 09:34, Tom Tromey wrote:
>>>>>> "Simon" == Simon Marchi <simon.marchi@efficios.com> writes:
>
> Simon> A patch later in this series would change objfile::section_iterator to
> Simon> yield `obj_section &` instead of `obj_section *`. Do it as a
> Simon> preparatory patch to avoid polluting that subsequent patch. I think it
> Simon> would make sense on its own anyway.
>
> Seems ok.
>
> Simon> - typedef section_iterator self_type;
> Simon> - typedef obj_section *value_type;
> Simon> + using self_type = section_iterator;
> Simon> + using reference = obj_section &;
>
> I never remember when value_type or reference need to be declared.
> Is it really correct to remove value_type?
I don't know for sure, but cppreference's iterator_traits page [1] says
this for C++17:
Nested type Definition
----------- ----------
difference_type Iter::difference_type
value_type Iter::value_type
pointer Iter::pointer
reference Iter::reference
iterator_category Iter::iterator_category
If Iter does not have any of the five nested types above, then this
template has no members by any of those names (std::iterator_traits
is SFINAE-friendly). (valid for C++17, until C++20)
So I guess if you tried to use iterator_traits with a type missing any
of those typedefs, it wouldn't work. But the original section_iterator
already missing reference and som others, so it's already in that state.
If that ever becomes a problem, I think we'll get a build failure, so
we'll know. I think I had some cases of that in an earlier iteration of
this series, where I had to add the missing member types for the
compiler to be happy.
And anyway, this particular code disappears in the last patch of the
series, so I'm not too worried about that particular instance.
[1] https://en.cppreference.com/w/cpp/iterator/iterator_traits.html
>
> Approved-By: Tom Tromey <tom@tromey.com>
Thanks, I will push this one right away.
Simon
prev parent reply other threads:[~2025-08-29 15:48 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-28 15:10 Simon Marchi
2025-08-28 15:10 ` [PATCH 2/3] gdbsupport: make filtered_iterator work with pointers Simon Marchi
2025-08-29 13:40 ` Tom Tromey
2025-08-29 16:00 ` Simon Marchi
2025-08-29 17:39 ` Tom Tromey
2025-08-29 20:11 ` Simon Marchi
2025-09-03 2:01 ` Tom Tromey
2025-08-29 17:59 ` Simon Marchi
2025-08-29 18:19 ` Tom Tromey
2025-08-28 15:10 ` [PATCH 3/3] gdb/objfiles: use filtered_iterator as objfile::section_iterator Simon Marchi
2025-08-29 13:42 ` Tom Tromey
2025-08-29 16:06 ` Simon Marchi
2025-08-29 20:22 ` Simon Marchi
2025-08-29 13:34 ` [PATCH 1/3] gdb/objfiles: make objfile::sections yield references Tom Tromey
2025-08-29 15:47 ` Simon Marchi [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c214affe-0b65-430b-bbd7-7be987f5680a@efficios.com \
--to=simon.marchi@efficios.com \
--cc=gdb-patches@sourceware.org \
--cc=tom@tromey.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox