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

--- Comment #10 from Jonathan Wakely <redi at gcc dot gnu.org> ---
EDG rejects it too:

"loop.cc", line 11: warning: "auto Magic(utempl::loopholes::Getter<I>)"
          declares a non-template function -- add <> to refer to a template
          instance
    friend constexpr auto Magic(Getter<I>);
                          ^

"loop.cc", line 31: error: no instance of function template "Injector::Method"
          matches the argument list
            argument types are: (int)
            object type is: const Injector
      arg.Method(42);
          ^
          detected during:
            instantiation of "SomeStruct::SomeStruct(auto &&) [with
                      <auto-1>=const Injector &]" at line 43
            instantiation of "auto Use<T,Args...>() [with T=SomeStruct,
                      Args=<Injector{}>]" at line 53

"loop.cc", line 54: error: cannot deduce the return type of function
          "utempl::loopholes::Magic" (declared at line 11); it has not been
          defined
    static_assert(is_same_v<decltype(Magic(utempl::loopholes::Getter<0>{})),
                                     ^

"loop.cc", line 54: error: static assertion failed
    static_assert(is_same_v<decltype(Magic(utempl::loopholes::Getter<0>{})),
    ^

3 errors detected in the compilation of "loop.cc".

Reply via email to