// 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);
}