Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions dev_tools/bin/edg-pack-cpfe-ce
Original file line number Diff line number Diff line change
Expand Up @@ -192,8 +192,7 @@ def _add_experimental_headers_to_base(tar: tarfile.TarFile,
'''
header_dir = source_dir / 'include_c++' / 'experimental'
if not header_dir.exists():
eprint(f"{header_dir} does not exist")
sys.exit(1)
return

edgpack.add_header_files_to_tar(
tar,
Expand Down
12 changes: 12 additions & 0 deletions include_c++/Changes
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
Version 7.1

10/22/26 [GH #36]
<meta> is no longer in the experimental subdirectory

The <meta> header (meta.stdh) has been moved out of the experimental
subdirectory, so it is now found in the same way as the other headers in
this directory. It also defines the library feature-test macro
__cpp_lib_reflection, with the value 202603L that GCC 16 uses.


-------------------------------------------------------------------------------
Version 7.0, September 28, 2026

No changes.
Expand Down
10 changes: 8 additions & 2 deletions include_c++/experimental/meta.stdh → include_c++/meta.stdh
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,18 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
/*
meta -- Include file for std::meta facilities

This is an experimental header approximating support for facilities as
described in the C++ committee's paper P2996.
This header approximates support for facilities as described in the C++
committee's paper P2996.
*/
#ifndef __META_STDH
#define __META_STDH

/* The library feature-test macro for reflection, with the value GCC 16
uses. As in GCC, it is defined only when reflection is enabled. */
#if defined(__cpp_impl_reflection) && !defined(__cpp_lib_reflection)
Comment thread
coderabbitai[bot] marked this conversation as resolved.
#define __cpp_lib_reflection 202603L
#endif /* defined(__cpp_impl_reflection) && ... */

#include <concepts>
#include <initializer_list>
#include <memory>
Expand Down
4 changes: 2 additions & 2 deletions src/interpret.c
Original file line number Diff line number Diff line change
Expand Up @@ -20597,7 +20597,7 @@ See do_constexpr_intrinsic_call for the meaning of the parameters.

/*
The enumerators of std::meta::operators, in the order in which
<experimental/meta> declares them, each paired with the operator-name kind
<meta> declares them, each paired with the operator-name kind
that denotes the same operator in the front end. An enumerator's value is its
position in this list, counting from one, and its symbol is the spelling that
opname_names records for the operator-name kind, so both directions of the
Expand Down Expand Up @@ -20720,7 +20720,7 @@ Implement std::meta::operator_of(info): the std::meta::operators enumerator for
the operator function represented by the argument (which may be an operator
function or operator function template). The result is stored as the value of
that enumerator, whose ordinal matches the enumerator sequence declared in
<experimental/meta> (the enumeration has an integer underlying type, so the
<meta> (the enumeration has an integer underlying type, so the
value is written in integer form). The evaluation fails if the reflection does
not designate an operator function.

Expand Down
2 changes: 1 addition & 1 deletion src/macro.c
Original file line number Diff line number Diff line change
Expand Up @@ -12465,7 +12465,7 @@ command line -D options.
} /* if */
if (injection_enabled) {
/* Likewise for token injection, which the EDG-provided
<experimental/meta.stdh> header uses to write token sequences. */
meta.stdh header uses to write token sequences. */
(void)enter_predef_macro("1", "__EDG_INJECTION_ENABLED__",
/*cannot_be_redefined=*/TRUE,
/*ref_suppresses_pch_file=*/FALSE);
Expand Down
1 change: 1 addition & 0 deletions tests/expectations/edg_x86_32/changes.log
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ EDGcpfe28436.sft.cpp:fp:-DTEST_NUMBER=1:FAIL:[6.8] GNU/clang compatibility: larg
EDGcpfe28794.sft.cpp:fp:-DTEST_NUMBER=1:REQUIREMENTS NOT MET:Abort on __builtin_bit_cast in dependent context
EDGcpfe8330.sft.cpp:fp:-DTEST_NUMBER=1:FAIL:[4.1] Microsoft compatibility: Calling conventions and pointer-to-member-function
EDGcpfe9522.sft.cpp:fp:-DTEST_NUMBER=1:FAIL:[4.1] Microsoft compatibility: __ptr64 on 64-bit targets
GH36.sft.cpp:fp:-DTEST_NUMBER=1 --c++26 --set_flag reflection:REQUIREMENTS NOT MET:[GH #36] <meta> defines __cpp_lib_reflection
GH38.sft.cpp:fn:-DTEST_NUMBER=1 --gnu_version 150200:REQUIREMENTS NOT MET:[GH #38] Integer value limits for a 128-bit host integer representation
1 change: 1 addition & 0 deletions tests/expectations/edg_x86_32_cp/changes.log
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,5 @@ EDGcpfe28436.sft.cpp:fp:-DTEST_NUMBER=1:FAIL:[6.8] GNU/clang compatibility: larg
EDGcpfe28794.sft.cpp:fp:-DTEST_NUMBER=1:REQUIREMENTS NOT MET:Abort on __builtin_bit_cast in dependent context
EDGcpfe8330.sft.cpp:fp:-DTEST_NUMBER=1:FAIL:[4.1] Microsoft compatibility: Calling conventions and pointer-to-member-function
EDGcpfe9522.sft.cpp:fp:-DTEST_NUMBER=1:FAIL:[4.1] Microsoft compatibility: __ptr64 on 64-bit targets
GH36.sft.cpp:fp:-DTEST_NUMBER=1 --c++26 --set_flag reflection:REQUIREMENTS NOT MET:[GH #36] <meta> defines __cpp_lib_reflection
GH38.sft.cpp:fn:-DTEST_NUMBER=1 --gnu_version 150200:REQUIREMENTS NOT MET:[GH #38] Integer value limits for a 128-bit host integer representation
1 change: 1 addition & 0 deletions tests/tests/changes/.GH36.rto/default.1.1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fe_only -DTEST_NUMBER=1 --c++26 --set_flag reflection Test_name.c
1 change: 1 addition & 0 deletions tests/tests/changes/.includes/meta/meta.stdh
17 changes: 17 additions & 0 deletions tests/tests/changes/GH36.sft.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//type:fp
//options:--c++26 --set_flag reflection
//use_system_includes: true
//edg_header_pack: meta
//require:TARG_SUPPORTS_X86_64 1
//remark:[GH #36] <meta> defines __cpp_lib_reflection
// 10/22/26 [GH #36]
//
// The EDG-provided <meta> header defines the library feature-test macro
// __cpp_lib_reflection, with the value GCC 16 uses. The GCC system headers
// that <meta> includes are not accepted for 32-bit targets, so the test
// requires an x86-64 target.

#include <meta>

static_assert(__cpp_lib_reflection == 202603L, "");
static_assert(__cpp_lib_reflection == __cpp_impl_reflection, "");
6 changes: 3 additions & 3 deletions tests/tests/cwg/.cwg3122.rto/default.1.1.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
fe_only -DTEST_NUMBER=1 -A --c++26 --set_flag reflection Test_name.c
"Test_name.c", line 4: catastrophic error: cannot open source file "meta"
#include <meta>
^
"/edg/workspace/bases/docker/dev-env/gcc/include/meta.stdh", line 23: catastrophic error: cannot open source file "concepts"
#include <concepts>
^

1 catastrophic error detected in the compilation of "Test_name.c".
Compilation terminated.
7 changes: 7 additions & 0 deletions tests/tests/cwg/.cwg3122.rto/edg_x86_32.1.1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
fe_only -DTEST_NUMBER=1 -A --c++26 --set_flag reflection Test_name.c
"/edg/workspace/bases/docker/dev-env/gcc-i686/include/meta.stdh", line 23: catastrophic error: cannot open source file "concepts"
#include <concepts>
^

1 catastrophic error detected in the compilation of "Test_name.c".
Compilation terminated.
7 changes: 7 additions & 0 deletions tests/tests/cwg/.cwg3122.rto/edg_x86_32_cp.1.1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
fe_only -DTEST_NUMBER=1 -A --c++26 --set_flag reflection Test_name.c
"/edg/workspace/bases/docker/dev-env/gcc-i686/include/meta.stdh", line 23: catastrophic error: cannot open source file "concepts"
#include <concepts>
^

1 catastrophic error detected in the compilation of "Test_name.c".
Compilation terminated.
6 changes: 3 additions & 3 deletions tests/tests/cwg/.cwg3145.rto/default.1.1.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
fe_only -DTEST_NUMBER=1 -A --c++26 --set_flag reflection Test_name.c
"Test_name.c", line 4: catastrophic error: cannot open source file "meta"
#include <meta>
^
"/edg/workspace/bases/docker/dev-env/gcc/include/meta.stdh", line 23: catastrophic error: cannot open source file "concepts"
#include <concepts>
^

1 catastrophic error detected in the compilation of "Test_name.c".
Compilation terminated.
7 changes: 7 additions & 0 deletions tests/tests/cwg/.cwg3145.rto/edg_x86_32.1.1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
fe_only -DTEST_NUMBER=1 -A --c++26 --set_flag reflection Test_name.c
"/edg/workspace/bases/docker/dev-env/gcc-i686/include/meta.stdh", line 23: catastrophic error: cannot open source file "concepts"
#include <concepts>
^

1 catastrophic error detected in the compilation of "Test_name.c".
Compilation terminated.
7 changes: 7 additions & 0 deletions tests/tests/cwg/.cwg3145.rto/edg_x86_32_cp.1.1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
fe_only -DTEST_NUMBER=1 -A --c++26 --set_flag reflection Test_name.c
"/edg/workspace/bases/docker/dev-env/gcc-i686/include/meta.stdh", line 23: catastrophic error: cannot open source file "concepts"
#include <concepts>
^

1 catastrophic error detected in the compilation of "Test_name.c".
Compilation terminated.
6 changes: 3 additions & 3 deletions tests/tests/cwg/.cwg3162.rto/default.1.1.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
fe_only -DTEST_NUMBER=1 -A --c++26 --set_flag reflection Test_name.c
"Test_name.c", line 4: catastrophic error: cannot open source file "meta"
#include <meta>
^
"/edg/workspace/bases/docker/dev-env/gcc/include/meta.stdh", line 23: catastrophic error: cannot open source file "concepts"
#include <concepts>
^

1 catastrophic error detected in the compilation of "Test_name.c".
Compilation terminated.
7 changes: 7 additions & 0 deletions tests/tests/cwg/.cwg3162.rto/edg_x86_32.1.1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
fe_only -DTEST_NUMBER=1 -A --c++26 --set_flag reflection Test_name.c
"/edg/workspace/bases/docker/dev-env/gcc-i686/include/meta.stdh", line 23: catastrophic error: cannot open source file "concepts"
#include <concepts>
^

1 catastrophic error detected in the compilation of "Test_name.c".
Compilation terminated.
7 changes: 7 additions & 0 deletions tests/tests/cwg/.cwg3162.rto/edg_x86_32_cp.1.1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
fe_only -DTEST_NUMBER=1 -A --c++26 --set_flag reflection Test_name.c
"/edg/workspace/bases/docker/dev-env/gcc-i686/include/meta.stdh", line 23: catastrophic error: cannot open source file "concepts"
#include <concepts>
^

1 catastrophic error detected in the compilation of "Test_name.c".
Compilation terminated.
Loading
Loading