This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libstdc++/37907] [c++0x] support for std::is_standard_layout



------- Comment #3 from jason at gcc dot gnu dot org  2009-07-16 20:36 -------
Subject: Bug 37907

Author: jason
Date: Thu Jul 16 20:36:10 2009
New Revision: 149721

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=149721
Log:
        PR libstdc++/37907
        Support std::is_standard_layout and std::is_trivial traits,
        change POD to C++0x version (except for layout).
        * gcc/c-common.c (c_common_reswords): Add __is_standard_layout
        and __is_trivial.
        * gcc/c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
        * gcc/cp/cp-tree.h (enum cp_trait_kind): Add CPTK_IS_STD_LAYOUT,
        CPTK_IS_TRIVIAL.
        (struct lang_type_class): Add non_std_layout.
        (CLASSTYPE_NON_STD_LAYOUT): New.
        * gcc/cp/class.c (check_bases): Set it.
        (check_field_decls): Likewise.
        (check_bases_and_members): Likewise.
        * gcc/cp/parser.c (cp_parser_primary_expression): Handle
RID_IS_STD_LAYOUT,
        RID_IS_TRIVIAL.
        (cp_parser_trait_expr): Likewise.
        * gcc/cp/semantics.c (trait_expr_value): Handle CPTK_IS_STD_LAYOUT,
        CPTK_IS_TRIVIAL.
        (finish_trait_expr): Likewise.
        * gcc/cp/tree.c (scalarish_type_p, trivial_type_p, std_layout_type_p):
New.
        (pod_type_p): Use them.
        * gcc/cp/typeck.c (build_class_member_access_expr): Check
        CLASSTYPE_NON_STD_LAYOUT rather than CLASSTYPE_NON_POD_P.
        * libstdc++-v3/include/std/type_traits: Add is_standard_layout,
is_trivial.

Added:
    trunk/gcc/doc/implement-cxx.texi
    trunk/gcc/testsuite/g++.dg/cpp0x/std-layout1.C
    trunk/gcc/testsuite/g++.dg/cpp0x/trivial1.C
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/Makefile.in
    trunk/gcc/c-common.c
    trunk/gcc/c-common.h
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/call.c
    trunk/gcc/cp/class.c
    trunk/gcc/cp/cp-tree.h
    trunk/gcc/cp/cxx-pretty-print.c
    trunk/gcc/cp/decl.c
    trunk/gcc/cp/init.c
    trunk/gcc/cp/parser.c
    trunk/gcc/cp/semantics.c
    trunk/gcc/cp/tree.c
    trunk/gcc/cp/typeck.c
    trunk/gcc/doc/gcc.texi
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
    trunk/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
    trunk/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
    trunk/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
    trunk/gcc/testsuite/g++.dg/ext/is_pod.C
    trunk/gcc/testsuite/g++.dg/other/offsetof3.C
    trunk/gcc/testsuite/g++.dg/overload/ellipsis1.C
    trunk/gcc/testsuite/g++.dg/warn/var-args1.C
    trunk/gcc/testsuite/g++.old-deja/g++.brendan/crash63.C
    trunk/gcc/testsuite/g++.old-deja/g++.brendan/crash64.C
    trunk/gcc/testsuite/g++.old-deja/g++.brendan/overload8.C
    trunk/gcc/testsuite/g++.old-deja/g++.other/vaarg3.C
    trunk/gcc/testsuite/g++.old-deja/g++.pt/vaarg3.C
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/include/std/type_traits
   
trunk/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
   
trunk/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37907


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]