[v3] Variadic templates, fourth revision (2/2)
Doug Gregor
doug.gregor@gmail.com
Fri Dec 8 15:41:00 GMT 2006
Hello all,
This is the fourth revision of the variadic templates patch. It brings
variadic templates back in sync with mainline GCC, and implements the
semantics of the most recent draft wording for variadic templates:
http://www.generic-programming.org/~dgregor/cpp/lang-variadics.pdf
Tested both the C++ front end and libstdc++ on i686-pc-linux-gnu. No
regressions.
This is part two of two, containing the changes to libstdc++'s TR1
implementation to make use of variadic templates.
Best Regards,
Doug Gregor
Open Systems Lab @ Indiana University
2006-12-08 Douglas Gregor <doug.gregor@gmail.com>
* include/Makefile.in: Regenerate.
* include/tr1/mu_iterate.h: Remove.
* include/tr1/tuple (_Tuple_impl): New.
(tuple): Make variadic, re-implement as shell over _Tuple_impl.
(0-element tuple): Basis case.
(2-element tuple): Handle pair methods.
(__get_helper): Remove.
(tuple_element): Reimplement with variadic templates.
(tuple_size): Ditto.
(get): Ditto.
(operator==): Use variadic templates in the signature.
(operator<): Ditto.
(operator!=): Ditto.
(operator>): Ditto.
(operator<=): Ditto.
(operator>=): Ditto.
(__stripped_tuple_type): Remove; we've inlined its behavior.
(make_tuple): Reimplement with variadic templates.
(tie): Ditto.
* include/tr1/tuple_iterate.h: Remove.
* include/tr1/bind_repeat.h: Remove.
* include/tr1/ref_wrap_iterate.h: Remove.
* include/tr1/bind_iterate.h: Remove.
* include/tr1/functional (_Weak_result_type): Add variadic
partial specializations.
(result_of): Ditto.
(__invoke): Reimplement using variadic templates.
(reference_wrapper): Reimplement operator() with variadic
templates.
(_Maybe_unary_or_binary_function): New.
(_Mem_fn): Implement for member function pointers using variadic
templates.
(placeholders): Define 30 placeholders.
(_Index_tuple): New.
(_Build_index_tuple): New.
(_No_tuple_element): New.
(_Safe_tuple_element_impl): New.
(_Safe_tuple_element): New.
(_Mu): Reimplement with variadic templates, use
_Safe_tuple_element instead of tuple_element.
(_Bind): Reimplement with variadic templates and tuples.
(_Bind_result): Ditto.
(bind): Reimplement with variadic templates.
(_Function_handler): Ditto.
(function): Ditto.
* include/tr1/functional_iterate.h: Remove.
* include/tr1/repeat.h: Remove.
* include/Makefile.am: Don't install removed headers.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: variadic-templates-libstdc++-v3.patch.gz
Type: application/x-gzip
Size: 18106 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/libstdc++/attachments/20061208/9d17380d/attachment.bin>
More information about the Libstdc++
mailing list