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

--- Comment #1 from Alexander Kondratskiy <kholdstare0.0 at gmail dot com> ---
Actually, this might be bogus. If I do an explicit `using`, everything works:

    #include <type_traits>

    template <typename Signature>
    struct declfunc;

    template <typename Result, typename... Args>
    struct declfunc<Result(Args...)>
    {
        Result operator() (Args...);
    };

    template <typename... Signatures>
    struct decloverload
        : declfunc<Signatures>...
    {
        using declfunc<Signatures>::operator()...;
    };

    using overload_set = decloverload<void(int), void(int, int)>;
    static_assert(std::is_invocable_v<overload_set, int>);

Godbolt link: https://godbolt.org/z/VJwPV4

Reply via email to