public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/105623] New: [12/13 regression][rejects valid] invalid use of auto when deducing return type of base class template
@ 2022-05-16 21:35 hello at josephloser dot com
  2022-05-16 21:42 ` [Bug c++/105623] " mpolacek at gcc dot gnu.org
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: hello at josephloser dot com @ 2022-05-16 21:35 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 105623
           Summary: [12/13 regression][rejects valid] invalid use of auto
                    when deducing return type of base class template
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hello at josephloser dot com
  Target Milestone: ---

The following code used to work in GCC 11.3.0, but fails on GCC 12.1.0 and
trunk.

```
#include <string_view>

constexpr auto g(auto name_fn)  {
    return name_fn();
}

template <char... Cs> struct ct_string {
    static constexpr char str[] = {Cs..., 0};
    static constexpr auto name() { return std::string_view{str, sizeof...(Cs)};
}
};

struct S : ct_string<'f', 'o', 'o'> {
    constexpr auto f() {
        return g(name);
    }
};

int main() {
    {
        S s;
        [[maybe_unused]] constexpr auto name = s.f();
    }

    return 0;
}
```


This code works on GCC 11.3.0 but fails on GCC 12.1.0 onward, including trunk.
See it live at https://godbolt.org/z/9c8vb1eP5

One workaround is to explicitly provide the return type for `ct_string::foo`
static function such as at https://godbolt.org/z/ccqPxoM5P which works on GCC
11.3.0, 12.1.0, and trunk.

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

end of thread, other threads:[~2022-05-31 19:32 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-16 21:35 [Bug c++/105623] New: [12/13 regression][rejects valid] invalid use of auto when deducing return type of base class template hello at josephloser dot com
2022-05-16 21:42 ` [Bug c++/105623] " mpolacek at gcc dot gnu.org
2022-05-16 22:05 ` mpolacek at gcc dot gnu.org
2022-05-16 22:23 ` davidfromonline at gmail dot com
2022-05-24 20:10 ` jason at gcc dot gnu.org
2022-05-25 15:09 ` cvs-commit at gcc dot gnu.org
2022-05-25 17:08 ` jason at gcc dot gnu.org
2022-05-31 19:31 ` cvs-commit at gcc dot gnu.org
2022-05-31 19:32 ` jason 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).