    template <typename T> void CallBanana() { T::Banana(); }
    template <typename T> void CallOrange() { T::Orange(); }
    template <typename T> void CallUnimpl();

    template <typename T>
    struct S {
        static void CallBanana() { T::Banana(); }
        static void CallOrange() { T::Orange(); }
        static void CallUnimpl();
    };

    int main() {
        (void)(&CallBanana<void>);
        (void)(&CallOrange<void>);
        (void)(&CallUnimpl<void>);
        (void)(&S<void>::CallBanana);
        (void)(&S<void>::CallOrange);
        (void)(&S<void>::CallUnimpl);
    }