[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