This patch implements a new trait __is_same_as. This is foundational
for future work on concepts in that it provides a mechanism for
reasoning about type equivalences.

It also provides the correct preconditions for __is_convertible_to as
required in meta.rel.

2013-07-26  Andrew Sutton  <andrew.n.sut...@gmail.com>
    * gcc/cp/semantics.c (trait_expr_value): Evaluate __is_same_as.
    (finish_trait_expr): Check __is_same_as and __is_convertible_to.
    * gcc/cp/constraint.cc (diagnose_trait): Diagnose failures in
    __is_same_as.
    * gcc/cp/parser.c (cp_parser_primary_expression),
    (cp_parser_trait_expr): Parse __is_same_as.
    * gcc/cp/cp-tree.h (cp_trait_kind): Add CPTK_IS_SAME_AS.
    * gcc/cp/cxx-pretty-print.c (pp_cxx_trait_expression): Pretty print
    __is_same_as trait.

Andrew

Attachment: is-same-as.patch
Description: Binary data

Reply via email to