namespace std {
  inline namespace __1 {
    template<bool, class = void> struct enable_if {};
    template<class T> struct enable_if<true, T> { using type = T; };
    template<bool B, class T = void> using enable_if_t = typename enable_if<B, T>::type;
  }
}
namespace similar_to_user_code {
    template<class T, class = std::enable_if_t<sizeof(T) != 1>>
  void f(T, short);
    template<class T, std::enable_if_t<sizeof(T) != 1>* = nullptr>
  void f(T, int);
    template<class T>
  std::enable_if_t<sizeof(T) != 1, void> f(T, long);
  void test() {
    f('x', 0);   }
}
namespace similar_to_libcxx_version_14 {
  template<bool, class = void> struct enable_if {};
  template<class T> struct enable_if<true, T> { using type = T; };
  template<bool B, class T = void> using __enable_if_t = typename enable_if<B, T>::type;
    template<class T, class = __enable_if_t<sizeof(T) != 1>>
  void f(T, short);
    template<class T, __enable_if_t<sizeof(T) != 1>* = nullptr>
  void f(T, int);
    template<class T>
  __enable_if_t<sizeof(T) != 1, void> f(T, long);
  void test() {
    f('x', 0);   }
}
namespace similar_to_libcxx_version_13 {
  template<bool> struct _MetaBase {};
  template<> struct _MetaBase<true> { template<class R> using _EnableIfImpl = R; };
  template<bool B, class T = void> using _EnableIf = typename _MetaBase<B>::template _EnableIfImpl<T>;
    template<class T, class = _EnableIf<sizeof(T) != 1>>
  void f(T, short);
    template<class T, _EnableIf<sizeof(T) != 1>* = nullptr>
  void f(T, int);
    template<class T>
  _EnableIf<sizeof(T) != 1, void> f(T, long);
  void test() {
    f('x', 0);   }
}
namespace not_all_names_are_magic {
  template<bool, class = void> struct enable_if {};
  template<class T> struct enable_if<true, T> { using type = T; };
  template<bool B, class T = void> using a_pony = typename enable_if<B, T>::type;
    template<class T, class = a_pony<sizeof(T) != 1>>
  void f(T, short);
    template<class T, a_pony<sizeof(T) != 1>* = nullptr>
  void f(T, int);
    template<class T>
  a_pony<sizeof(T) != 1, void> f(T, long);
  void test() {
    f('x', 0);   }
}