public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/104255] New: parsing trailing return type fails with parameter pack expansion when two parameter packs at present
@ 2022-01-26 22:51 nickhuang99 at hotmail dot com
  2022-01-27 20:49 ` [Bug c++/104255] " nickhuang99 at hotmail dot com
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: nickhuang99 at hotmail dot com @ 2022-01-26 22:51 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 104255
           Summary: parsing trailing return type fails with parameter pack
                    expansion when two parameter packs at present
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: nickhuang99 at hotmail dot com
  Target Milestone: ---

The following template function causes error when we define trailing return
type which is identical to what function body actual returning
( https://www.godbolt.org/z/n3nbW785o ) 

template<size_t N, size_t...Is>
constexpr size_t identity2(index_sequence<Is...>seq){
        return N;
}
template<size_t...Seq1, size_t...Seq2>
auto getSeq2(index_sequence<Seq1...>seq1, index_sequence<Seq2...>seq2)
// this trailing return type causing parsing error of parameter pack
->index_sequence<(identity2<Seq1, Seq2...>(seq2))...>;
{
        return index_sequence<(identity2<Seq1, Seq2...>(seq2))...>{};
}


As a positive example against above, when "identity1" takes no parameter pack
as template argument, it works fine.

template<size_t N>
constexpr size_t identity1(){
        return N;
}
template<size_t...Indexes>
auto getSeq1(index_sequence<Indexes...>indexes)
// trailing return type works, no need to define function body at all.
->index_sequence<(identity1<Indexes>())...>;


clang13/MSVC all work as expected.

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

end of thread, other threads:[~2024-02-27  5:12 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-26 22:51 [Bug c++/104255] New: parsing trailing return type fails with parameter pack expansion when two parameter packs at present nickhuang99 at hotmail dot com
2022-01-27 20:49 ` [Bug c++/104255] " nickhuang99 at hotmail dot com
2022-01-28 15:11 ` ppalka at gcc dot gnu.org
2022-01-28 18:48 ` [Bug c++/104255] parsing function signature fails when it uses a function parameter outside of an unevaluated context nickhuang99 at hotmail dot com
2022-01-28 22:40 ` nickhuang99 at hotmail dot com
2022-02-02 15:13 ` ppalka at gcc dot gnu.org
2023-10-06 13:42 ` ppalka at gcc dot gnu.org
2023-11-08 21:54 ` ppalka at gcc dot gnu.org
2023-11-08 21:55 ` ppalka at gcc dot gnu.org
2024-02-27  5:12 ` barry.revzin at gmail dot com

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).