Commit Graph

19 Commits

Author SHA1 Message Date
Mark Mitchell
e7e9396544 re PR c++/9737 ([DR150] Partial template specialisation selection failure involving template parameter defaults)
PR c++/9737
	* pt.c (coerce_template_template_parms): Do not templates with
	excess default arguments to match template template parameters
	with fewer parameters.
	(coerce_template_parms): Add use_default_args parameter; use
	default arguments only when true.
	(lookup_template_class): Adjust call to coerce_template_parms.
	(fn_type_unification): Likewise.
	(unify): Likewise.
	(get_bindings): Likewise.
	(dependent_type_p): Add assertions.

	PR c++/9737
	* g++.dg/template/ttp15.C: New test.
	* g++.dg/template/ttp16.C: Likewise.
	* g++.dg/template/ttp17.C: Likewise.
	* g++.old-deja/g++.pt/ttp36.C: Remove.
	* g++.old-deja/g++.pt/ttp19.C: Likewise.
	* g++.old-deja/g++.pt/ttp37.C: Likewise.
	* g++.old-deja/g++.pt/ttp38.C: Likewise.
	* g++.old-deja/g++.pt/ttp39.C: Likewise.
	* g++.old-deja/g++.pt/ttp9.C: Likewise.
	* g++.old-deja/g++.pt/ttp40.C: Likewise.
	* g++.old-deja/g++.pt/ttp51.C: Likewise.
	* g++.old-deja/g++.pt/ttp26.C: Likewise.
	* g++.old-deja/g++.pt/ttp36.C: Likewise.

	* testsuite/testsuite_tr1.h (test_property): New function.
	* testsuite/tr1/4_metaprogramming/type_properties/extent/extent.cc 
	(test01)

From-SVN: r110693
2006-02-07 11:11:30 +00:00
Paolo Carlini
ab44b018f6 testsuite_tr1.h: Add missing include; use std::__are_same.
2006-01-14  Paolo Carlini  <pcarlini@suse.de>

	* testsuite/testsuite_tr1.h: Add missing include; use std::__are_same.

From-SVN: r109705
2006-01-14 20:59:41 +00:00
Paolo Carlini
90922b2d10 complex (arg, [...]): Add, implementing TR1, 8.1.9.
2006-01-13  Paolo Carlini  <pcarlini@suse.de>
	    Howard Hinnant  <hhinnant@apple.com>

	* include/tr1/complex (arg, conj, imag, norm, polar, pow, real):
	Add, implementing TR1, 8.1.9.
	(__promote_2): New.
	* include/tr1/common.h: New, provides __promote, __promote_2.
	* include/Makefile.am: Add.
	* include/Makefile.in: Regenerate.
	* testsuite/testsuite_tr1.h (check_ret_type): New.
	* testsuite/tr1/8_c_compatibility/complex/overloads_int.cc: New.
	* testsuite/tr1/8_c_compatibility/complex/overloads_float.cc: New.

Co-Authored-By: Howard Hinnant <hhinnant@apple.com>

From-SVN: r109663
2006-01-13 09:45:57 +00:00
Paolo Carlini
516ebd4486 re PR libstdc++/24808 (is_object fails to compile with incomplete types)
2005-11-11  Paolo Carlini  <pcarlini@suse.de>

	PR libstdc++/24808
	* include/tr1/type_traits (__is_abstract_helper): Rename to __in_array
	(with complemented logic).
	(is_function): Use it, don't use __conv_helper.
	(is_abstract): Adjust.
	(__conv_helper): Rename to __is_convertible_simple.
	(is_convertible): Adjust.
	* testsuite/testsuite_tr1.h (class IncompleteClass): Add.
	* testsuite/tr1/4_metaprogramming/composite_type_traits/is_object/
	24808.cc: New.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/is_enum/
	24808.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/is_function/
	24808.cc: Likewise.

From-SVN: r106818
2005-11-12 00:19:24 +00:00
Kelley Cook
83f517994d All files: Update FSF address.
2005-08-17  Kelley Cook  <kcook@gcc.gnu.org>

	* All files: Update FSF address.

From-SVN: r103192
2005-08-17 02:28:44 +00:00
Paolo Carlini
4e5362a2a3 type_traits (has_trivial_copy, [...]): Adjust according to the resolution of TR1 issue 3.21.
2005-04-27  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1/type_traits (has_trivial_copy, has_trivial_assign,
	has_nothrow_copy, has_nothrow_assign): Adjust according to the
	resolution of TR1 issue 3.21.
	* testsuite/testsuite_tr1.h (test_copy_property,
	test_assign_property): Remove.
	* testsuite/tr1/4_metaprogramming/type_properties/
	has_nothrow_assign/has_nothrow_assign.cc: Adjust.
	* testsuite/tr1/4_metaprogramming/type_properties/
	has_nothrow_copy/has_nothrow_copy.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/type_properties/
	has_trivial_assign/has_trivial_assign.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/type_properties/
	has_trivial_copy/has_trivial_copy.cc: Likewise.

From-SVN: r98829
2005-04-27 15:08:57 +00:00
Doug Gregor
59cffcf69a [multiple changes]
2005-03-31  Chris Jefferson  <chris@bubblescope.net>

        * include/tr1/tuple: Support iteration via tuple_iterate.h.
        * include/tr1/tuple_iterate.h: Iteration file for tuple.

2005-03-31  Douglas Gregor  <doug.gregor@gmail.com>

        * include/Makefile.am (tr1_headers): Add bind and mu repetition
        headers and reference_wrapper<> forwarding header.
        * include/Makefile.in: Regenerate.
        * include/tr1/bind_iterate.h: Implementation of function call
        operators for the function object returned from tr1::bind().
        * include/tr1/bind_repeat.h: Bind-specific repetition header,
        akin to include/tr1/repeat.h.
        * include/tr1/functional (_Mem_fn): Bug fix: declare result
member
        template for use with result_of.
        (is_bind_expression): New.
        (is_placeholder): New.
        (_Placeholder): New. Placeholder type for bind.
        (_Mu): New. Implementation detail of bind.
        (_Bind, _Bind_result): New. Function objects returned by bind.
        (_GLIBCXX_JOIN): New. Required to create bind placeholders.
        * include/tr1/functional_iterate.h (_Bind, _Bind_result, bind):
        New. Implementation of tr1::bind.
        * include/tr1/mu_iterate.h (_Mu): result template and operator()
        for the _Mu helper to bind.
        * include/tr1/ref_fwd.h (reference_wrapper): Forward declaration
        used by tuple header.
        (ref): Ditto.
        (cref): Ditto.
        * include/tr1/repeat.h: Add bind-specific repetition macros.
        * include/tr1/tuple: Use reference_wrapper forwarding header for
        initial definitions, then include <tr1/functional> at the end, to
        make the circular dependencies work.
        (tie): Support zero-argument tie() function.
        * testsuite/tr1/3_function_objects/bind/all_bound.cc: New test of
        bind() functionality with parameters bound.
        * testsuite/tr1/3_function_objects/bind/nested.cc: New test of
        nested bind() expressions.
        * testsuite/tr1/3_function_objects/bind/placeholders.cc: New test
        of bind() placeholders.
        * testsuite/tr1/3_function_objects/bind/ref.cc: New test of bind()
        with arguments bound via reference_wrapper<>.
        * scripts/gen_includers.pl: Generate the repetitive part of
	include/tr1/repeat.h.
	* scripts/gen_bind_includers.pl: Generate the repetitive part of
	include/tr1/bind_repeat.h.

From-SVN: r97361
2005-04-01 03:35:59 +00:00
Paolo Carlini
cff001b2e8 type_traits (is_polymorphic): Don't forget the virtual destructor, thus avoiding warnings.
2005-03-07  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1/type_traits (is_polymorphic): Don't forget
	the virtual destructor, thus avoiding warnings.
	* testsuite/testsuite_tr1.h (class AbstractClass,
	class PolymorphicClass): Likewise.

2005-03-07  Paolo Carlini  <pcarlini@suse.de>

	* include/std/std_complex.h (pow(const complex<_Tp>&,
	const complex<_Tp>&)): Dispatch to either __complex_pow(__x.__rep(),
	__y.__rep()) or __complex_pow(__x, __y) depending on the macro
	_GLIBCXX_USE_C99_COMPLEX.

From-SVN: r96048
2005-03-07 22:22:35 +00:00
Paolo Carlini
442dca704c type_traits: Implemenet is_polymorphic.
2005-03-03  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1/type_traits: Implemenet is_polymorphic.
	(is_empty): Minor tweaks.
	* testsuite/testsuite_tr1.h: Add test types.
	* testsuite/tr1/4_metaprogramming/type_properties/
	is_polymorphic/is_polymorphic.cc: New.
	* testsuite/tr1/4_metaprogramming/type_properties/
	is_polymorphic/typedefs.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/composite_type_traits/
	is_union_or_class/is_union_or_class.cc: Add tests.

From-SVN: r95829
2005-03-03 13:52:20 +00:00
Paolo Carlini
9e38f7028f type_traits: Add the trivial is_union and is_class; add the __is_union_or_class extension.
2005-02-25  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1/type_traits: Add the trivial is_union and is_class;
	add the __is_union_or_class extension.
	(is_enum, is_empty): Use the latter.
	* include/tr1/type_traits_fwd.h: Add __is_union_or_class.
	* testsuite/testsuite_tr1.h: Add UnionType; trivial formatting
	fixes.
	* testsuite/tr1/4_metaprogramming/composite_type_traits/
	is_union_or_class/is_union_or_class.cc: New.
	* testsuite/tr1/4_metaprogramming/composite_type_traits/
	is_union_or_class/typedefs.cc: Likewise.

From-SVN: r95541
2005-02-25 18:17:06 +00:00
Douglas Gregor
0179f2c632 TR1 mem_fn and function support
From-SVN: r95486
2005-02-24 01:16:08 +00:00
Paolo Carlini
c150a271b1 type_traits: Implement is_convertible.
2005-02-23  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1/type_traits: Implement is_convertible.
	* testsuite/tr1/4_metaprogramming/relationships_between_types/
	is_convertible/is_convertible.cc: New.
	* testsuite/tr1/4_metaprogramming/relationships_between_types/
	is_convertible/typedefs.cc: Likewise.
	* testsuite/testsuite_tr1.h: Add class DerivedType.

	* include/tr1/type_traits (is_function): Don't mistake references
	to function types for function types.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_function/is_function.cc: Add testcase.

From-SVN: r95458
2005-02-23 17:23:44 +00:00
Paolo Carlini
f8023b7846 type_traits: Implement is_abstract, by exploiting the resolution of DR core/337.
2005-01-28  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1/type_traits: Implement is_abstract, by exploiting the
	resolution of DR core/337.
	* testsuite/testsuite_tr1.h: Add AbstractClass.
	* testsuite/tr1/4_metaprogramming/type_properties/is_abstract/
	is_abstract.cc: New.
	* testsuite/tr1/4_metaprogramming/type_properties/is_abstract/
	typedefs.cc: Likewise.

	* include/tr1/type_traits (is_function): Rewrite, use the conversion
	F& -> F* instead, thus avoiding problems with abstract classes.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_function/is_function.cc: Add a test for tricky AbstractClass.

From-SVN: r94370
2005-01-28 13:29:41 +00:00
Paolo Carlini
36651afeec type_traits: Add has_trivial_copy, has_trivial_assign, has_nothrow_copy, has_nothrow_assign.
2004-12-30  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1/type_traits: Add has_trivial_copy, has_trivial_assign,
	has_nothrow_copy, has_nothrow_assign.
	* testsuite/testsuite_tr1.h: Add test_copy_property and
	test_assign_property.
	* testsuite/tr1/4_metaprogramming/type_properties/
	has_nothrow_assign/has_nothrow_assign.cc: New.
	* testsuite/tr1/4_metaprogramming/type_properties/
	has_nothrow_assign/typedefs.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/type_properties/
	has_nothrow_copy/has_nothrow_copy.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/type_properties/
	has_nothrow_copy/typedefs.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/type_properties/
	has_trivial_assign/has_trivial_assign.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/type_properties/
	has_trivial_assign/typedefs.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/type_properties/
	has_trivial_copy/has_trivial_copy.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/type_properties/
	has_trivial_copy/typedefs.cc: Likewise.

From-SVN: r92745
2004-12-30 23:27:28 +00:00
Paolo Carlini
a9e7ba8139 type_traits: Implement is_enum (usual caveats about the nasty consequences of c++/19076...).
2004-12-25  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1/type_traits: Implement is_enum (usual caveats about
	the nasty consequences of c++/19076...).
	* testsuite/testsuite_tr1.h: Add ConvType.
	* testsuite/tr1/4_metaprogramming/composite_type_traits/
	is_scalar/is_scalar.cc: New.
	* testsuite/tr1/4_metaprogramming/composite_type_traits/
	is_scalar/typedefs.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_enum/is_enum.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_enum/typedefs.cc: Likewise.

From-SVN: r92604
2004-12-25 15:24:36 +00:00
Paolo Carlini
db5ff2363d type_traits: Implement rank.
2004-12-11  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1/type_traits: Implement rank.
	* testsuite/testsuite_tr1.h (test_property): Generalize to any
	value_type.
	(test_category, test_relationship): Slightly tweak consistently.
	* testsuite/tr1/4_metaprogramming/type_properties/rank/
	rank.cc: New.
	* testsuite/tr1/4_metaprogramming/type_properties/rank/
	typedefs.cc: Likewise.

	* testsuite/tr1/4_metaprogramming/composite_type_traits/
	is_compound/is_compound.cc: New.
	* testsuite/tr1/4_metaprogramming/composite_type_traits/
	is_compound/typedefs.cc: Likewise.

	* testsuite/tr1/4_metaprogramming/composite_type_traits/
	is_arithmetic/is_arithmetic.cc: Tweak consistently with the
	testsuite_tr1.h changes.
	* testsuite/tr1/4_metaprogramming/composite_type_traits/
	is_fundamental/is_fundamental.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_array/is_array.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_floating_point/is_floating_point.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_integral/is_integral.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_reference/is_reference.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_void/is_void.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/relationships_between_types/
	is_same/is_same.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/type_properties/is_const/
	is_const.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/type_properties/is_volatile/
	is_volatile.cc: Likewise.

From-SVN: r92033
2004-12-11 21:46:27 +00:00
Paolo Carlini
d63a0e228c type_traits: Implement is_same, add_reference and remove_reference.
2004-12-08  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1/type_traits: Implement is_same, add_reference and
	remove_reference.
	* testsuite/testsuite_tr1.h (test_relationship): New.
	* testsuite/tr1/4_metaprogramming/reference_modifications/
	add_reference.cc: New.
	* testsuite/tr1/4_metaprogramming/reference_modifications/
	remove_reference.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/relationships_between_types/
	is_same/is_same.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/relationships_between_types/
	is_same/typedefs.cc: Likewise.

	* testsuite/tr1/4_metaprogramming/type_properties/is_const/
	is_const.cc: Minor tweaks.
	* testsuite/tr1/4_metaprogramming/type_properties/is_volatile/
	is_volatile.cc: Likewise.

From-SVN: r91907
2004-12-08 16:33:51 +00:00
Paolo Carlini
0f910b4f4f type_traits: Implement is_const and is_volatile.
2004-12-07  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1/type_traits: Implement is_const and is_volatile.
	* testsuite/testsuite_tr1.h (test_property): New.
	* testsuite/tr1/4_metaprogramming/type_properties/
	is_const/is_const.c: New.
	* testsuite/tr1/4_metaprogramming/type_properties/
	is_const/typedefs.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/type_properties/
	is_volatile/is_volatile.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/type_properties/
	is_volatile/typedefs.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/composite_type_traits/
	is_arithmetic/is_arithmetic.cc: Slightly tweak to use ClassType
	from testsuite_tr1.h.
	* testsuite/tr1/4_metaprogramming/composite_type_traits/
	is_fundamental/is_fundamental.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_array/is_array.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_floating_point/is_floating_point.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_integral/is_integral.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_reference/is_reference.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_void/is_void.cc: Likewise.

From-SVN: r91808
2004-12-07 16:40:46 +00:00
Paolo Carlini
493bc46004 type_traits: New.
2004-12-04  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1/type_traits: New.
	* include/Makefile.am: Add.
	* include/Makefile.in: Regenerate.
	* testsuite/testsuite_tr1.h: New.
	* testsuite/tr1/4_metaprogramming/composite_type_traits/
	is_arithmetic/is_arithmetic.cc: New.
	* testsuite/tr1/4_metaprogramming/composite_type_traits/
	is_arithmetic/typedefs.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/composite_type_traits/
	is_fundamental/is_fundamental.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/composite_type_traits/
	is_fundamental/typedefs.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/helper_classes/
	true_false_type.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/helper_classes/
	true_false_type_typedefs.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/helper_classes/
	typedefs.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_array/is_array.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_array/typedefs.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_floating_point/is_floating_point.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_floating_point/typedefs.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_integral/is_integral.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_integral/typedefs.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_void/is_void.cc: Likewise.
	* testsuite/tr1/4_metaprogramming/primary_type_categories/
	is_void/typedefs.cc: Likewise.

From-SVN: r91723
2004-12-04 09:08:42 +00:00