[PATCH] [libcxx] Add <experimental/tuple>

Eric Fiselier eric at efcs.ca
Mon Feb 2 13:03:17 PST 2015


Hi mclow.lists, jroelofs, danalbert, K-ballo,

This patch adds `<experimental/tuple>`. `<experimental/tuple>` contains `tuple_size_v` and `apply(F&&, Tuple&&)`. 

In order to implement `apply` the existing functionality of `__invoke` in `<__functional_base>` is used. In order for `apply` to be constexpr all of the existing `__invoke` overloads were marked as constexpr.

Because `__invoke` is used `apply` supports all function types specified in the `INVOKE` macro specification. This means `apply` has extended support for pointers to member functions and pointers to member objects. This extension is tested in `libcxx/test/libcxx/experimental/utilities/tuple/tuple.apply/extended_types.pas.cpp`.

http://reviews.llvm.org/D7354

Files:
  include/__functional_base
  include/experimental/tuple
  include/type_traits
  test/libcxx/experimental/utilities/tuple/header.tuple.synop/includes.pass.cpp
  test/libcxx/experimental/utilities/tuple/tuple.apply/extended_types.pass.cpp
  test/libcxx/experimental/utilities/tuple/version.pass.cpp
  test/std/experimental/utilities/tuple/header.tuple.synop/includes.pass.cpp
  test/std/experimental/utilities/tuple/tuple.apply/arg_type.pass.cpp
  test/std/experimental/utilities/tuple/tuple.apply/constexpr_types.pass.cpp
  test/std/experimental/utilities/tuple/tuple.apply/large_arity.pass.cpp
  test/std/experimental/utilities/tuple/tuple.apply/ref_qualifiers.pass.cpp
  test/std/experimental/utilities/tuple/tuple.apply/return_type.pass.cpp
  test/std/experimental/utilities/tuple/tuple.apply/types.pass.cpp
  test/std/experimental/utilities/tuple/tuple_size_v.fail.cpp
  test/std/experimental/utilities/tuple/tuple_size_v.pass.cpp
  test/std/experimental/utilities/tuple/tuple_size_v_2.fail.cpp
  test/std/experimental/utilities/tuple/tuple_size_v_3.fail.cpp
  www/ts1z_status.html

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D7354.19182.patch
Type: text/x-patch
Size: 49894 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150202/e5c0bd6a/attachment.bin>


More information about the cfe-commits mailing list