// PR c++/40595
// { dg-do compile { target c++11 } }

template<int N>
struct S
{
    typedef int type;
};

template<typename T>
struct Get
{
    static T get();
};

template<typename F>
struct B
{
    template<typename ... Args>
        typename S<sizeof( Get<F>::get() (Get<Args>::get() ...) )>::type
        f(Args&& ... a);
};

struct X
{
    bool operator()(int) const;
};

int main()
{
    B<X> b;
    b.f(1);
}
