// PR c++/48319
// { dg-do compile { target c++11 } }
// We were failing to recognize declval<_Args1> as dependent.

template<typename Tp> Tp declval() noexcept;

template<typename _Tp>
class __is_constructible_helper
{
  typedef char __one;
  typedef struct { char __arr[2]; } __two;

  template<typename _Tp1, typename... _Args1>
  static decltype(_Tp1(declval<_Args1>()...), __one()) __test(int);

  template<typename, typename...>
  static __two __test(...);

public:
  static const bool __value = sizeof(__test<_Tp>(0)) == 1;
};

int main() {
  return __is_constructible_helper<int>::__value;
}
