From c962153633048a506107a3ce13906edd19bfeb5c Mon Sep 17 00:00:00 2001 From: Patrick Palka Date: Thu, 17 Oct 2024 09:12:16 -0400 Subject: [PATCH] doc: remove outdated C++ Concepts section This was added as part of the initial Concepts TS implementation and reflects an early version of the Concepts TS paper, which is very different from standard C++20 concepts (and even from more recent versions of the Concepts TS, support for which we deprecated in GCC 14 and removed for GCC 15). So there's not much to salvage from this section besides the __is_same trait documentation which we can conveniently move to the previous Type Traits section. gcc/ChangeLog: * doc/extend.texi (C++ Concepts): Remove section. Move __is_same documentation to the previous Type Traits section. Reviewed-by: Jason Merrill --- gcc/doc/extend.texi | 44 -------------------------------------------- 1 file changed, 44 deletions(-) diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 9bb263f9510..42bd567119d 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -29268,7 +29268,6 @@ Predefined Macros,cpp,The GNU C Preprocessor}). * C++ Attributes:: Variable, function, and type attributes for C++ only. * Function Multiversioning:: Declaring multiple function versions. * Type Traits:: Compiler support for type traits. -* C++ Concepts:: Improved support for generic programming. * Deprecated Features:: Things will disappear from G++. * Backwards Compatibility:: Compatibilities with earlier definitions of C++. @end menu @@ -30145,49 +30144,6 @@ from @code{0} to @code{@var{length}-1}. This is provided for efficient implementation of @code{std::make_integer_sequence}. @enddefbuiltin - -@node C++ Concepts -@section C++ Concepts - -C++ concepts provide much-improved support for generic programming. In -particular, they allow the specification of constraints on template arguments. -The constraints are used to extend the usual overloading and partial -specialization capabilities of the language, allowing generic data structures -and algorithms to be ``refined'' based on their properties rather than their -type names. - -The following keywords are reserved for concepts. - -@table @code -@kindex assumes -@item assumes -States an expression as an assumption, and if possible, verifies that the -assumption is valid. For example, @code{assume(n > 0)}. - -@kindex axiom -@item axiom -Introduces an axiom definition. Axioms introduce requirements on values. - -@kindex forall -@item forall -Introduces a universally quantified object in an axiom. For example, -@code{forall (int n) n + 0 == n}. - -@kindex concept -@item concept -Introduces a concept definition. Concepts are sets of syntactic and semantic -requirements on types and their values. - -@kindex requires -@item requires -Introduces constraints on template arguments or requirements for a member -function of a class template. -@end table - -The front end also exposes a number of internal mechanism that can be used -to simplify the writing of type traits. Note that some of these traits are -likely to be removed in the future. - @defbuiltin{bool __is_same (@var{type1}, @var{type2})} A binary type trait: @code{true} whenever the @var{type1} and @var{type2} refer to the same type.