bug#62386: CC Mode 5.35.2 (C++//l); C++ concept indentation
Michael Welsh Duggan <[email protected]> Fri, 14 Apr 2023 08:03:40 -0400
| Newsgroups | gmane.emacs.cc-mode.general |
|---|---|
| Message-ID | <[email protected]> |
Alan Mackenzie <[email protected]> writes: >> Before: > >> template <typename T> >> requires (OctetLike<T> >> || (std::rank_v<T> == 1 && std::extent_v<T> == 0 >> && OctetLike<std::remove_extent_t<T>>)) >> Chunk(std::shared_ptr<T> const & p, length_t size) >> : data_{p, octet_cast(p.get())}, >> size_{size} >> {} > > >> After: > >> template <typename T> >> requires (OctetLike<T> >> || (std::rank_v<T> == 1 && std::extent_v<T> == 0 >> && OctetLike<std::remove_extent_t<T>>)) >> Chunk(std::shared_ptr<T> const & p, length_t size) >> : data_{p, octet_cast(p.get())}, >> size_{size} >> {} > > This is a difficult one. Aligning the || under OctetLike causes problems > when the parenthesis is already far to the right, for example if requires > is on the same line as template. Then everything will be indented too > far to the right. This dilemma has come up at least twice before. > > I think what's worse is the lack of further indentation of the && line. > I don't know what to do about that, at the moment. I guess I just see it as the standard parenthesized expression problem that already exists. It's generally up to the programmer to make sure opening parentheses don't happen too far to the right. I agree about the && line. > I'm also a little bit worried about the "virtual semicolon" detection on > some more complicated requires constructs. > > Anyhow, I think I'll commit what I've got, and leave these doubts to be > cleared up later. Sure. I'm generally happy with the improvements that have been made so far. -- Michael Welsh Duggan ([email protected])