Simplify type_t
authorYedidya Feldblum <yfeldblum@fb.com>
Mon, 30 Oct 2017 21:52:50 +0000 (14:52 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Mon, 30 Oct 2017 22:07:59 +0000 (15:07 -0700)
Summary:
[Folly] Simplify `type_t` by lifting the type to be aliased into the structure template parameter list.

May also fix curious build failures in some compilers.

Reviewed By: akrieger

Differential Revision: D6188953

fbshipit-source-id: 96e1c3af9c11959c0899c092933158922efa7e60

folly/Traits.h

index f513462af9dc2045ee795df172861d1ffa36b3ff..fb797f377bb72a7f860180c8ea511066c15ce0c5 100644 (file)
@@ -220,15 +220,14 @@ using _t = typename T::type;
  */
 
 namespace traits_detail {
-template <class...>
+template <class T, class...>
 struct type_t_ {
-  template <class T>
-  using apply = T;
+  using type = T;
 };
 } // namespace traits_detail
 
 template <class T, class... Ts>
-using type_t = typename traits_detail::type_t_<Ts...>::template apply<T>;
+using type_t = typename traits_detail::type_t_<T, Ts...>::type;
 template <class... Ts>
 using void_t = type_t<void, Ts...>;