http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53039

--- Comment #9 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-04-20 
10:27:11 UTC ---
Eh, this is *not* a library issue:

#include <type_traits>

#if 1

template<typename... _Elements>
  class tuple
    {
      template<typename... _UElements, typename = typename
           std::enable_if<std::__and_<std::is_convertible<_UElements,
           _Elements>...>::value>::type>
        tuple(_UElements&&...);
    };

#else

template<typename _Elements>
  class tuple1
    {
      template<typename _UElements, typename = typename
           std::enable_if<std::__and_<std::is_convertible<_UElements,
           _Elements>>::value>::type>
        tuple1(_UElements&&);
    };

#endif

template <bool...>
struct Bs
{
  static const bool value = true;
};

template <typename... Ts>
struct AType {
  template <typename... Us,
            typename std::enable_if<
               Bs<std::is_convertible<Us, Ts>::value...>::value,
               bool>::type = false
  >
  int foo(Us&&...)
  {
    return sizeof...(Us);
  }
};

int main() {
  AType<int, int> t;
  return t.foo(1, 1);
}

Reply via email to