aboutsummaryrefslogtreecommitdiff
path: root/clang
diff options
context:
space:
mode:
Diffstat (limited to 'clang')
-rw-r--r--clang/docs/LanguageExtensions.rst5
-rw-r--r--clang/docs/ReleaseNotes.rst16
-rw-r--r--clang/include/clang/AST/APNumericStorage.h5
-rw-r--r--clang/include/clang/AST/AbstractBasicReader.h2
-rw-r--r--clang/include/clang/Basic/DebugOptions.def2
-rw-r--r--clang/include/clang/Basic/DiagnosticLexKinds.td8
-rw-r--r--clang/include/clang/Basic/DiagnosticSemaKinds.td2
-rw-r--r--clang/include/clang/Basic/riscv_sifive_vector.td27
-rw-r--r--clang/include/clang/CIR/Dialect/IR/CIROps.td10
-rw-r--r--clang/include/clang/Driver/Options.td17
-rw-r--r--clang/include/clang/Lex/Preprocessor.h6
-rw-r--r--clang/include/clang/Lex/PreprocessorOptions.h4
-rw-r--r--clang/include/clang/Serialization/ASTReader.h8
-rw-r--r--clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h8
-rw-r--r--clang/lib/AST/ByteCode/Floating.h3
-rw-r--r--clang/lib/AST/ByteCode/IntegralAP.h2
-rw-r--r--clang/lib/Analysis/ExprMutationAnalyzer.cpp13
-rw-r--r--clang/lib/Basic/SourceManager.cpp18
-rw-r--r--clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp11
-rw-r--r--clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp8
-rw-r--r--clang/lib/Driver/ToolChains/Clang.cpp9
-rw-r--r--clang/lib/Format/FormatTokenLexer.cpp13
-rw-r--r--clang/lib/Format/TokenAnnotator.cpp23
-rw-r--r--clang/lib/Format/WhitespaceManager.cpp3
-rw-r--r--clang/lib/Frontend/ASTUnit.cpp6
-rw-r--r--clang/lib/Frontend/InitPreprocessor.cpp6
-rw-r--r--clang/lib/Frontend/TextDiagnostic.cpp76
-rw-r--r--clang/lib/Headers/module.modulemap5
-rw-r--r--clang/lib/Lex/ModuleMap.cpp1
-rw-r--r--clang/lib/Lex/PPMacroExpansion.cpp14
-rw-r--r--clang/lib/Sema/SemaFunctionEffects.cpp20
-rw-r--r--clang/lib/Sema/SemaStmt.cpp3
-rw-r--r--clang/lib/Sema/SemaTemplateDeductionGuide.cpp3
-rw-r--r--clang/lib/Sema/SemaType.cpp38
-rw-r--r--clang/lib/Serialization/ASTReader.cpp4
-rw-r--r--clang/lib/Serialization/ASTWriter.cpp3
-rw-r--r--clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp64
-rw-r--r--clang/lib/StaticAnalyzer/Core/CallEvent.cpp18
-rw-r--r--clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp2
-rw-r--r--clang/test/AST/ByteCode/cxx11.cpp2
-rw-r--r--clang/test/C/C2y/n3457.c38
-rw-r--r--clang/test/C/C2y/n3457_1.c20
-rw-r--r--clang/test/C/C2y/n3457_2.c10
-rw-r--r--clang/test/CIR/CodeGen/builtins-floating-point.c11
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexp_v_16.c131
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexp_v_32.c111
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexp_v_bf.c135
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexpa_v.c234
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexpa_v_64.c90
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexp_v_16.c131
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexp_v_32.c111
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexp_v_bf.c134
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexpa_v.c234
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexpa_v_64.c90
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexp_v_16.c248
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexp_v_32.c208
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexp_v_bf.c248
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexpa_v.c448
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexpa_v_64.c167
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexp_v_16.c261
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexp_v_32.c228
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexp_v_bf.c272
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexpa_v.c492
-rw-r--r--clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexpa_v_64.c183
-rw-r--r--clang/test/CodeGen/SystemZ/builtins-systemz-zvector.c8
-rw-r--r--clang/test/CodeGen/SystemZ/builtins-systemz-zvector5.c2
-rw-r--r--clang/test/CodeGen/X86/math-builtins.c322
-rw-r--r--clang/test/CodeGen/builtin-sqrt.c2
-rw-r--r--clang/test/CodeGen/libcalls.c20
-rw-r--r--clang/test/CodeGen/math-libcalls.c232
-rw-r--r--clang/test/CodeGenOpenCL/cl20-device-side-enqueue-attributes.cl2
-rw-r--r--clang/test/DebugInfo/KeyInstructions/flag.cpp3
-rw-r--r--clang/test/Frontend/diags-interesting-source-region-colors.cpp30
-rw-r--r--clang/test/Modules/Inputs/builtin-headers/system-modules.modulemap5
-rw-r--r--clang/test/Modules/builtin-headers.mm1
-rw-r--r--clang/test/Modules/crash-enum-visibility-with-header-unit.cppm46
-rw-r--r--clang/test/Preprocessor/unwind-tables.c2
-rw-r--r--clang/test/Sema/attr-nonblocking-constraints.cpp60
-rw-r--r--clang/test/Sema/labeled-break-continue.c18
-rw-r--r--clang/test/SemaCXX/vector.cpp13
-rw-r--r--clang/test/SemaTemplate/ctad.cpp12
-rwxr-xr-xclang/tools/scan-build/bin/set-xcode-analyzer26
-rw-r--r--clang/unittests/Analysis/ExprMutationAnalyzerTest.cpp15
-rw-r--r--clang/unittests/Format/FormatTest.cpp7
-rw-r--r--clang/unittests/Format/FormatTestComments.cpp450
-rw-r--r--clang/unittests/Format/TokenAnnotatorTest.cpp25
-rw-r--r--clang/www/c_status.html2
-rwxr-xr-xclang/www/cxx_dr_status.html3077
-rwxr-xr-xclang/www/make_cxx_dr_status72
89 files changed, 8393 insertions, 782 deletions
diff --git a/clang/docs/LanguageExtensions.rst b/clang/docs/LanguageExtensions.rst
index 495f2ab..baa0bbb 100644
--- a/clang/docs/LanguageExtensions.rst
+++ b/clang/docs/LanguageExtensions.rst
@@ -385,7 +385,9 @@ Builtin Macros
``__COUNTER__``
Defined to an integer value that starts at zero and is incremented each time
- the ``__COUNTER__`` macro is expanded.
+ the ``__COUNTER__`` macro is expanded. This is a standard feature in C2y but
+ is an extension in earlier language modes and in C++. This macro can only be
+ expanded 2147483647 times at most.
``__INCLUDE_LEVEL__``
Defined to an integral value that is the include depth of the file currently
@@ -1821,6 +1823,7 @@ Octal literals prefixed with ``0o`` or ``0O`` C
``_Countof`` (N3369, N3469) C2y C89
``_Generic`` with a type operand (N3260) C2y C89, C++
``++``/``--`` on ``_Complex`` value (N3259) C2y C89, C++
+``__COUNTER__`` (N3457) C2y C89, C++
============================================= ================================ ============= =============
Builtin type aliases
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 92fc938..2e2c519 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -196,6 +196,11 @@ C2y Feature Support
function or variable within an extern inline function is no longer a
constraint per `WG14 N3622 <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3622.txt>`_.
- Clang now supports `N3355 <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3355.htm>`_ Named Loops.
+- Clang's implementation of ``__COUNTER__`` was updated to conform to
+ `WG14 N3457 <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3457.htm>`_.
+ This includes adding pedantic warnings for the feature being an extension in
+ other language modes as well as an error when the counter is expanded more
+ than 2147483647 times.
C23 Feature Support
^^^^^^^^^^^^^^^^^^^
@@ -350,7 +355,7 @@ Improvements to Clang's diagnostics
potential misaligned members get processed before they can get discarded.
(#GH144729)
-- Clang now emits dignostic with correct message in case of assigning to const reference captured in lambda. (#GH105647)
+- Clang now emits a diagnostic with the correct message in case of assigning to const reference captured in lambda. (#GH105647)
- Fixed false positive in ``-Wmissing-noreturn`` diagnostic when it was requiring the usage of
``[[noreturn]]`` on lambdas before C++23 (#GH154493).
@@ -390,6 +395,11 @@ Improvements to Clang's diagnostics
that were previously incorrectly accepted in case of other irrelevant
conditions are now consistently diagnosed, identical to C++ mode.
+- Fix false-positive unused label diagnostic when a label is used in a named break
+ or continue (#GH166013)
+- Clang now emits a diagnostic in case `vector_size` or `ext_vector_type`
+ attributes are used with a negative size (#GH165463).
+
Improvements to Clang's time-trace
----------------------------------
@@ -452,6 +462,7 @@ Bug Fixes to Attribute Support
- Fix a crash when the function name is empty in the `swift_name` attribute. (#GH157075)
- Fixes crashes or missing diagnostics with the `device_kernel` attribute. (#GH161905)
- Fix handling of parameter indexes when an attribute is applied to a C++23 explicit object member function.
+- Fixed several false positives and false negatives in function effect (`nonblocking`) analysis. (#GH166078) (#GH166101) (#GH166110)
Bug Fixes to C++ Support
^^^^^^^^^^^^^^^^^^^^^^^^
@@ -466,7 +477,7 @@ Bug Fixes to C++ Support
casts that are guaranteed to fail (#GH137518).
- Fix bug rejecting partial specialization of variable templates with auto NTTPs (#GH118190).
- Fix a crash if errors "member of anonymous [...] redeclares" and
- "intializing multiple members of union" coincide (#GH149985).
+ "initializing multiple members of union" coincide (#GH149985).
- Fix a crash when using ``explicit(bool)`` in pre-C++11 language modes. (#GH152729)
- Fix the parsing of variadic member functions when the ellipis immediately follows a default argument.(#GH153445)
- Fixed a bug that caused ``this`` captured by value in a lambda with a dependent explicit object parameter to not be
@@ -496,6 +507,7 @@ Bug Fixes to C++ Support
nontrivial member when another member has an initializer. (#GH81774)
- Fixed a template depth issue when parsing lambdas inside a type constraint. (#GH162092)
- Diagnose unresolved overload sets in non-dependent compound requirements. (#GH51246) (#GH97753)
+- Fix a crash when extracting unavailable member type from alias in template deduction. (#GH165560)
Bug Fixes to AST Handling
^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/clang/include/clang/AST/APNumericStorage.h b/clang/include/clang/AST/APNumericStorage.h
index e1948a5..0442408 100644
--- a/clang/include/clang/AST/APNumericStorage.h
+++ b/clang/include/clang/AST/APNumericStorage.h
@@ -41,9 +41,8 @@ protected:
llvm::APInt getIntValue() const {
unsigned NumWords = llvm::APInt::getNumWords(BitWidth);
if (NumWords > 1)
- return llvm::APInt(BitWidth, NumWords, pVal);
- else
- return llvm::APInt(BitWidth, VAL);
+ return llvm::APInt(BitWidth, llvm::ArrayRef(pVal, NumWords));
+ return llvm::APInt(BitWidth, VAL);
}
void setIntValue(const ASTContext &C, const llvm::APInt &Val);
};
diff --git a/clang/include/clang/AST/AbstractBasicReader.h b/clang/include/clang/AST/AbstractBasicReader.h
index 0d187eb4..064a342 100644
--- a/clang/include/clang/AST/AbstractBasicReader.h
+++ b/clang/include/clang/AST/AbstractBasicReader.h
@@ -173,7 +173,7 @@ public:
llvm::SmallVector<uint64_t, 4> data;
for (uint32_t i = 0; i != numWords; ++i)
data.push_back(asImpl().readUInt64());
- return llvm::APInt(bitWidth, numWords, &data[0]);
+ return llvm::APInt(bitWidth, data);
}
llvm::FixedPointSemantics readFixedPointSemantics() {
diff --git a/clang/include/clang/Basic/DebugOptions.def b/clang/include/clang/Basic/DebugOptions.def
index a768b12..ea3636f 100644
--- a/clang/include/clang/Basic/DebugOptions.def
+++ b/clang/include/clang/Basic/DebugOptions.def
@@ -46,6 +46,8 @@ ENUM_DEBUGOPT(EmitDwarfUnwind, EmitDwarfUnwindType, 2,
DEBUGOPT(NoDwarfDirectoryAsm , 1, 0, Benign) ///< Set when -fno-dwarf-directory-asm
///< is enabled.
+DEBUGOPT(Dwarf2CFIAsm, 1, 0, NotCompatible) ///< Set when -fdwarf2-cfi-asm is enabled.
+
DEBUGOPT(NoInlineLineTables, 1, 0, Benign) ///< Whether debug info should contain
///< inline line tables.
diff --git a/clang/include/clang/Basic/DiagnosticLexKinds.td b/clang/include/clang/Basic/DiagnosticLexKinds.td
index c7fe6e1d..4171872 100644
--- a/clang/include/clang/Basic/DiagnosticLexKinds.td
+++ b/clang/include/clang/Basic/DiagnosticLexKinds.td
@@ -90,6 +90,14 @@ def err_unterminated___pragma : Error<"missing terminating ')' character">;
def err_conflict_marker : Error<"version control conflict marker in file">;
+def err_counter_overflow : Error<
+ "'__COUNTER__' value cannot exceed 2'147'483'647">;
+def ext_counter : Extension<
+ "'__COUNTER__' is a C2y extension">, InGroup<C2y>;
+def warn_counter : Warning<
+ "'__COUNTER__' is incompatible with standards before C2y">,
+ InGroup<CPre2yCompat>, DefaultIgnore;
+
def err_raw_delim_too_long : Error<
"raw string delimiter longer than 16 characters"
"; use PREFIX( )PREFIX to delimit raw string">;
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index 4e369be..fa50953 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -3510,6 +3510,8 @@ def err_init_method_bad_return_type : Error<
"init methods must return an object pointer type, not %0">;
def err_attribute_invalid_size : Error<
"vector size not an integral multiple of component size">;
+def err_attribute_vec_negative_size
+ : Error<"vector must have non-negative size">;
def err_attribute_zero_size : Error<"zero %0 size">;
def err_attribute_size_too_large : Error<"%0 size too large">;
def err_typecheck_sve_rvv_ambiguous : Error<
diff --git a/clang/include/clang/Basic/riscv_sifive_vector.td b/clang/include/clang/Basic/riscv_sifive_vector.td
index 89e644a..0371279 100644
--- a/clang/include/clang/Basic/riscv_sifive_vector.td
+++ b/clang/include/clang/Basic/riscv_sifive_vector.td
@@ -121,6 +121,13 @@ multiclass RVVVQMACCQOQBuiltinSet<list<list<string>> suffixes_prototypes> {
defm NAME : RVVOutOp1Op2BuiltinSet<NAME, "s", suffixes_prototypes>;
}
+multiclass RVVVFEXPBuiltinSet<list<list<string>> suffixes_prototypes, string type_range> {
+ let UnMaskedPolicyScheme = HasPassthruOperand,
+ OverloadedName = NAME,
+ Log2LMUL = [-2, -1, 0, 1, 2, 3] in
+ defm NAME : RVVOutBuiltinSet<NAME, type_range, suffixes_prototypes>;
+}
+
multiclass RVVVFNRCLIPBuiltinSet<string suffix, string prototype, string type_range> {
let Log2LMUL = [-3, -2, -1, 0, 1, 2],
Name = NAME,
@@ -145,6 +152,26 @@ let UnMaskedPolicyScheme = HasPolicyOperand in
defm sf_vqmaccsu_4x8x4 : RVVVQMACCQOQBuiltinSet<[["", "w", "ww(FixedSEW:8)Sv(FixedSEW:8)Uv"]]>;
}
+let RequiredFeatures = ["xsfvfbfexp16e"] in {
+ defm sf_vfexp : RVVVFEXPBuiltinSet<[["v", "v", "vv"]], "y">;
+}
+
+let RequiredFeatures = ["xsfvfexp16e"] in {
+ defm sf_vfexp : RVVVFEXPBuiltinSet<[["v", "v", "vv"]], "x">;
+}
+
+let RequiredFeatures = ["xsfvfexp32e"] in {
+ defm sf_vfexp : RVVVFEXPBuiltinSet<[["v", "v", "vv"]], "f">;
+}
+
+let RequiredFeatures = ["xsfvfexpa"] in {
+ defm sf_vfexpa : RVVVFEXPBuiltinSet<[["v", "v", "vv"]], "xf">;
+}
+
+let RequiredFeatures = ["xsfvfexpa64e"] in {
+ defm sf_vfexpa : RVVVFEXPBuiltinSet<[["v", "v", "vv"]], "d">;
+}
+
let UnMaskedPolicyScheme = HasPolicyOperand in
let RequiredFeatures = ["xsfvfwmaccqqq"] in
defm sf_vfwmacc_4x4x4 : RVVVFWMACCBuiltinSet<[["", "Fw", "FwFwSvv"]]>;
diff --git a/clang/include/clang/CIR/Dialect/IR/CIROps.td b/clang/include/clang/CIR/Dialect/IR/CIROps.td
index 2b361ed..dc56db1 100644
--- a/clang/include/clang/CIR/Dialect/IR/CIROps.td
+++ b/clang/include/clang/CIR/Dialect/IR/CIROps.td
@@ -4171,6 +4171,16 @@ def CIR_ATanOp : CIR_UnaryFPToFPBuiltinOp<"atan", "ATanOp"> {
}];
}
+def CIR_CeilOp : CIR_UnaryFPToFPBuiltinOp<"ceil", "FCeilOp"> {
+ let summary = "Computes the ceiling of the specified value";
+ let description = [{
+ `cir.ceil` computes the ceiling of a given value and returns a result
+ of the same type.
+
+ Floating-point exceptions are ignored, and it does not set `errno`.
+ }];
+}
+
def CIR_CosOp : CIR_UnaryFPToFPBuiltinOp<"cos", "CosOp"> {
let summary = "Computes the floating-point cosine value";
let description = [{
diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
index 6e1c942..11e81e0 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -741,6 +741,7 @@ def gcc_toolchain : Joined<["--"], "gcc-toolchain=">, Flags<[NoXarchOption]>,
"Specify a directory where Flang can find 'lib{,32,64}/gcc{,-cross}/$triple/$version'. "
"Flang will use the GCC installation with the largest version">;
def gcc_triple_EQ : Joined<["--"], "gcc-triple=">,
+ Visibility<[ClangOption, FlangOption]>,
HelpText<"Search for the GCC installation with the specified triple.">;
def CC : Flag<["-"], "CC">, Visibility<[ClangOption, CC1Option]>,
Group<Preprocessor_Group>,
@@ -950,9 +951,9 @@ def Xarch__
the host system, which can be used to suppress incompatible GPU arguments.}]>,
MetaVarName<"<arch> <arg>">;
def Xarch_host : Separate<["-"], "Xarch_host">, Flags<[NoXarchOption]>,
- HelpText<"Pass <arg> to the CUDA/HIP host compilation">, MetaVarName<"<arg>">;
+ HelpText<"Pass <arg> to host compilation in the offloading toolchain">, MetaVarName<"<arg>">;
def Xarch_device : Separate<["-"], "Xarch_device">, Flags<[NoXarchOption]>,
- HelpText<"Pass <arg> to the CUDA/HIP device compilation">, MetaVarName<"<arg>">;
+ HelpText<"Pass <arg> to device compilation in the offloading toolchain">, MetaVarName<"<arg>">;
def Xassembler : Separate<["-"], "Xassembler">,
HelpText<"Pass <arg> to the assembler">, MetaVarName<"<arg>">,
Group<CompileOnly_Group>;
@@ -2154,8 +2155,12 @@ defm dollars_in_identifiers : BoolFOption<"dollars-in-identifiers",
PosFlag<SetTrue, [], [ClangOption], "Allow">,
NegFlag<SetFalse, [], [ClangOption], "Disallow">,
BothFlags<[], [ClangOption, CC1Option], " '$' in identifiers">>;
-def fdwarf2_cfi_asm : Flag<["-"], "fdwarf2-cfi-asm">, Group<clang_ignored_f_Group>;
-def fno_dwarf2_cfi_asm : Flag<["-"], "fno-dwarf2-cfi-asm">, Group<clang_ignored_f_Group>;
+
+defm dwarf2_cfi_asm
+ : BoolFOption<"dwarf2-cfi-asm", CodeGenOpts<"Dwarf2CFIAsm">, DefaultFalse,
+ PosFlag<SetTrue, [], [ClangOption, CC1Option]>,
+ NegFlag<SetFalse>>;
+
defm dwarf_directory_asm : BoolFOption<"dwarf-directory-asm",
CodeGenOpts<"NoDwarfDirectoryAsm">, DefaultFalse,
NegFlag<SetTrue, [], [ClangOption, CC1Option]>,
@@ -8445,6 +8450,10 @@ def aligned_alloc_unavailable : Flag<["-"], "faligned-alloc-unavailable">,
MarshallingInfoFlag<LangOpts<"AlignedAllocationUnavailable">>,
ShouldParseIf<faligned_allocation.KeyPath>;
+def finitial_counter_value_EQ : Joined<["-"], "finitial-counter-value=">,
+ HelpText<"Sets the initial value for __COUNTER__, defaults to 0.">,
+ MarshallingInfoInt<PreprocessorOpts<"InitialCounterValue">, "0">;
+
} // let Visibility = [CC1Option]
//===----------------------------------------------------------------------===//
diff --git a/clang/include/clang/Lex/Preprocessor.h b/clang/include/clang/Lex/Preprocessor.h
index 3975484..4120022 100644
--- a/clang/include/clang/Lex/Preprocessor.h
+++ b/clang/include/clang/Lex/Preprocessor.h
@@ -226,7 +226,7 @@ class Preprocessor {
LangOptions::FPEvalMethodKind::FEM_UnsetOnCommandLine;
// Next __COUNTER__ value, starts at 0.
- unsigned CounterValue = 0;
+ uint32_t CounterValue = 0;
enum {
/// Maximum depth of \#includes.
@@ -2421,8 +2421,8 @@ public:
bool SawDateOrTime() const {
return DATELoc != SourceLocation() || TIMELoc != SourceLocation();
}
- unsigned getCounterValue() const { return CounterValue; }
- void setCounterValue(unsigned V) { CounterValue = V; }
+ uint32_t getCounterValue() const { return CounterValue; }
+ void setCounterValue(uint32_t V) { CounterValue = V; }
LangOptions::FPEvalMethodKind getCurrentFPEvalMethod() const {
assert(CurrentFPEvalMethod != LangOptions::FEM_UnsetOnCommandLine &&
diff --git a/clang/include/clang/Lex/PreprocessorOptions.h b/clang/include/clang/Lex/PreprocessorOptions.h
index d4c4e1c..1c2f6e7 100644
--- a/clang/include/clang/Lex/PreprocessorOptions.h
+++ b/clang/include/clang/Lex/PreprocessorOptions.h
@@ -198,6 +198,10 @@ public:
/// If set, the UNIX timestamp specified by SOURCE_DATE_EPOCH.
std::optional<uint64_t> SourceDateEpoch;
+ /// The initial value for __COUNTER__; typically is zero but can be set via a
+ /// -cc1 flag for testing purposes.
+ uint32_t InitialCounterValue = 0;
+
public:
PreprocessorOptions() : PrecompiledPreambleBytes(0, false) {}
diff --git a/clang/include/clang/Serialization/ASTReader.h b/clang/include/clang/Serialization/ASTReader.h
index af856a80..4ca45a1 100644
--- a/clang/include/clang/Serialization/ASTReader.h
+++ b/clang/include/clang/Serialization/ASTReader.h
@@ -220,8 +220,8 @@ public:
}
/// Receives __COUNTER__ value.
- virtual void ReadCounter(const serialization::ModuleFile &M,
- unsigned Value) {}
+ virtual void ReadCounter(const serialization::ModuleFile &M, uint32_t Value) {
+ }
/// This is called for each AST file loaded.
virtual void visitModuleFile(StringRef Filename,
@@ -312,7 +312,7 @@ public:
bool Complain,
std::string &SuggestedPredefines) override;
- void ReadCounter(const serialization::ModuleFile &M, unsigned Value) override;
+ void ReadCounter(const serialization::ModuleFile &M, uint32_t Value) override;
bool needsInputFileVisitation() override;
bool needsSystemInputFileVisitation() override;
void visitModuleFile(StringRef Filename,
@@ -352,7 +352,7 @@ public:
StringRef ModuleFilename,
StringRef SpecificModuleCachePath,
bool Complain) override;
- void ReadCounter(const serialization::ModuleFile &M, unsigned Value) override;
+ void ReadCounter(const serialization::ModuleFile &M, uint32_t Value) override;
};
/// ASTReaderListenter implementation to set SuggestedPredefines of
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
index 4aee165..66da799 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
@@ -372,12 +372,10 @@ public:
ProgramPoint getProgramPoint(bool IsPreVisit = false,
const ProgramPointTag *Tag = nullptr) const;
- /// Returns a new state with all argument regions invalidated.
- ///
- /// This accepts an alternate state in case some processing has already
- /// occurred.
+ /// Invalidates the regions (arguments, globals, special regions like 'this')
+ /// that may have been written by this call, returning the updated state.
ProgramStateRef invalidateRegions(unsigned BlockCount,
- ProgramStateRef Orig = nullptr) const;
+ ProgramStateRef State) const;
using FrameBindingTy = std::pair<SVal, SVal>;
using BindingsTy = SmallVectorImpl<FrameBindingTy>;
diff --git a/clang/lib/AST/ByteCode/Floating.h b/clang/lib/AST/ByteCode/Floating.h
index 659892e..cc918dc 100644
--- a/clang/lib/AST/ByteCode/Floating.h
+++ b/clang/lib/AST/ByteCode/Floating.h
@@ -45,7 +45,8 @@ private:
if (singleWord())
return APFloat(getSemantics(), APInt(BitWidth, Val));
unsigned NumWords = numWords();
- return APFloat(getSemantics(), APInt(BitWidth, NumWords, Memory));
+ return APFloat(getSemantics(),
+ APInt(BitWidth, llvm::ArrayRef(Memory, NumWords)));
}
public:
diff --git a/clang/lib/AST/ByteCode/IntegralAP.h b/clang/lib/AST/ByteCode/IntegralAP.h
index 6683db9..b11e6ee 100644
--- a/clang/lib/AST/ByteCode/IntegralAP.h
+++ b/clang/lib/AST/ByteCode/IntegralAP.h
@@ -63,7 +63,7 @@ public:
if (singleWord())
return APInt(BitWidth, Val, Signed);
unsigned NumWords = llvm::APInt::getNumWords(BitWidth);
- return llvm::APInt(BitWidth, NumWords, Memory);
+ return llvm::APInt(BitWidth, llvm::ArrayRef(Memory, NumWords));
}
public:
diff --git a/clang/lib/Analysis/ExprMutationAnalyzer.cpp b/clang/lib/Analysis/ExprMutationAnalyzer.cpp
index 75b17c54..54c30c0 100644
--- a/clang/lib/Analysis/ExprMutationAnalyzer.cpp
+++ b/clang/lib/Analysis/ExprMutationAnalyzer.cpp
@@ -746,11 +746,14 @@ ExprMutationAnalyzer::Analyzer::findPointeeMemberMutation(const Expr *Exp) {
Stm, Context));
if (MemberCallExpr)
return MemberCallExpr;
- const auto Matches =
- match(stmt(forEachDescendant(
- memberExpr(hasObjectExpression(canResolveToExprPointee(Exp)))
- .bind(NodeID<Expr>::value))),
- Stm, Context);
+ const auto Matches = match(
+ stmt(forEachDescendant(
+ expr(anyOf(memberExpr(
+ hasObjectExpression(canResolveToExprPointee(Exp))),
+ binaryOperator(hasOperatorName("->*"),
+ hasLHS(canResolveToExprPointee(Exp)))))
+ .bind(NodeID<Expr>::value))),
+ Stm, Context);
return findExprMutation(Matches);
}
diff --git a/clang/lib/Basic/SourceManager.cpp b/clang/lib/Basic/SourceManager.cpp
index 938c648..97aa0f2 100644
--- a/clang/lib/Basic/SourceManager.cpp
+++ b/clang/lib/Basic/SourceManager.cpp
@@ -907,19 +907,23 @@ getExpansionLocSlowCase(SourceLocation Loc) const {
SourceLocation SourceManager::getSpellingLocSlowCase(SourceLocation Loc) const {
do {
- FileIDAndOffset LocInfo = getDecomposedLoc(Loc);
- Loc = getSLocEntry(LocInfo.first).getExpansion().getSpellingLoc();
- Loc = Loc.getLocWithOffset(LocInfo.second);
+ const SLocEntry &Entry = getSLocEntry(getFileID(Loc));
+ Loc = Entry.getExpansion().getSpellingLoc().getLocWithOffset(
+ Loc.getOffset() - Entry.getOffset());
} while (!Loc.isFileID());
return Loc;
}
SourceLocation SourceManager::getFileLocSlowCase(SourceLocation Loc) const {
do {
- if (isMacroArgExpansion(Loc))
- Loc = getImmediateSpellingLoc(Loc);
- else
- Loc = getImmediateExpansionRange(Loc).getBegin();
+ const SLocEntry &Entry = getSLocEntry(getFileID(Loc));
+ const ExpansionInfo &ExpInfo = Entry.getExpansion();
+ if (ExpInfo.isMacroArgExpansion()) {
+ Loc = ExpInfo.getSpellingLoc().getLocWithOffset(Loc.getOffset() -
+ Entry.getOffset());
+ } else {
+ Loc = ExpInfo.getExpansionLocStart();
+ }
} while (!Loc.isFileID());
return Loc;
}
diff --git a/clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp b/clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
index e35100f..d9b9e3b 100644
--- a/clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
@@ -211,6 +211,17 @@ RValue CIRGenFunction::emitBuiltinExpr(const GlobalDecl &gd, unsigned builtinID,
assert(!cir::MissingFeatures::fastMathFlags());
return emitUnaryMaybeConstrainedFPBuiltin<cir::CosOp>(*this, *e);
+ case Builtin::BIceil:
+ case Builtin::BIceilf:
+ case Builtin::BIceill:
+ case Builtin::BI__builtin_ceil:
+ case Builtin::BI__builtin_ceilf:
+ case Builtin::BI__builtin_ceilf16:
+ case Builtin::BI__builtin_ceill:
+ case Builtin::BI__builtin_ceilf128:
+ assert(!cir::MissingFeatures::fastMathFlags());
+ return emitUnaryMaybeConstrainedFPBuiltin<cir::CeilOp>(*this, *e);
+
case Builtin::BIfabs:
case Builtin::BIfabsf:
case Builtin::BIfabsl:
diff --git a/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp b/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
index 5a6193f..d941082 100644
--- a/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+++ b/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
@@ -1336,6 +1336,14 @@ mlir::LogicalResult CIRToLLVMATanOpLowering::matchAndRewrite(
return mlir::success();
}
+mlir::LogicalResult CIRToLLVMCeilOpLowering::matchAndRewrite(
+ cir::CeilOp op, OpAdaptor adaptor,
+ mlir::ConversionPatternRewriter &rewriter) const {
+ mlir::Type resTy = typeConverter->convertType(op.getType());
+ rewriter.replaceOpWithNewOp<mlir::LLVM::FCeilOp>(op, resTy, adaptor.getSrc());
+ return mlir::success();
+}
+
mlir::LogicalResult CIRToLLVMAllocaOpLowering::matchAndRewrite(
cir::AllocaOp op, OpAdaptor adaptor,
mlir::ConversionPatternRewriter &rewriter) const {
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index d3ab6f1..30d3e52 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -7879,10 +7879,13 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
!TC.getTriple().isAndroid() && TC.useIntegratedAs()))
CmdArgs.push_back("-faddrsig");
- if ((Triple.isOSBinFormatELF() || Triple.isOSBinFormatMachO()) &&
+ const bool HasDefaultDwarf2CFIASM =
+ (Triple.isOSBinFormatELF() || Triple.isOSBinFormatMachO()) &&
(EH || UnwindTables || AsyncUnwindTables ||
- DebugInfoKind != llvm::codegenoptions::NoDebugInfo))
- CmdArgs.push_back("-D__GCC_HAVE_DWARF2_CFI_ASM=1");
+ DebugInfoKind != llvm::codegenoptions::NoDebugInfo);
+ if (Args.hasFlag(options::OPT_fdwarf2_cfi_asm,
+ options::OPT_fno_dwarf2_cfi_asm, HasDefaultDwarf2CFIASM))
+ CmdArgs.push_back("-fdwarf2-cfi-asm");
if (Arg *A = Args.getLastArg(options::OPT_fsymbol_partition_EQ)) {
std::string Str = A->getAsString(Args);
diff --git a/clang/lib/Format/FormatTokenLexer.cpp b/clang/lib/Format/FormatTokenLexer.cpp
index ab32938..a9ea5ec 100644
--- a/clang/lib/Format/FormatTokenLexer.cpp
+++ b/clang/lib/Format/FormatTokenLexer.cpp
@@ -318,14 +318,21 @@ void FormatTokenLexer::tryMergePreviousTokens() {
{tok::equal, tok::greater},
{tok::star, tok::greater},
{tok::pipeequal, tok::greater},
- {tok::pipe, tok::arrow},
- {tok::hash, tok::minus, tok::hash},
- {tok::hash, tok::equal, tok::hash}},
+ {tok::pipe, tok::arrow}},
TT_BinaryOperator) ||
Tokens.back()->is(tok::arrow)) {
Tokens.back()->ForcedPrecedence = prec::Comma;
return;
}
+ if (Tokens.size() >= 3 &&
+ Tokens[Tokens.size() - 3]->is(Keywords.kw_verilogHash) &&
+ Tokens[Tokens.size() - 2]->isOneOf(tok::minus, tok::equal) &&
+ Tokens[Tokens.size() - 1]->is(Keywords.kw_verilogHash) &&
+ tryMergeTokens(3, TT_BinaryOperator)) {
+ Tokens.back()->setFinalizedType(TT_BinaryOperator);
+ Tokens.back()->ForcedPrecedence = prec::Comma;
+ return;
+ }
} else if (Style.isTableGen()) {
// TableGen's Multi line string starts with [{
if (tryMergeTokens({tok::l_square, tok::l_brace},
diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp
index 8e227da..cb41756c 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -358,11 +358,11 @@ private:
Contexts.back().IsExpression = false;
} else if (OpeningParen.Previous &&
(OpeningParen.Previous->isOneOf(
- tok::kw_static_assert, tok::kw_noexcept, tok::kw_explicit,
- tok::kw_while, tok::l_paren, tok::comma, TT_CastRParen,
+ tok::kw_noexcept, tok::kw_explicit, tok::kw_while,
+ tok::l_paren, tok::comma, TT_CastRParen,
TT_BinaryOperator) ||
OpeningParen.Previous->isIf())) {
- // static_assert, if and while usually contain expressions.
+ // if and while usually contain expressions.
Contexts.back().IsExpression = true;
} else if (Style.isJavaScript() && OpeningParen.Previous &&
(OpeningParen.Previous->is(Keywords.kw_function) ||
@@ -454,6 +454,11 @@ private:
if (StartsObjCSelector)
OpeningParen.setType(TT_ObjCSelector);
+ const bool IsStaticAssert =
+ PrevNonComment && PrevNonComment->is(tok::kw_static_assert);
+ if (IsStaticAssert)
+ Contexts.back().InStaticAssertFirstArgument = true;
+
// MightBeFunctionType and ProbablyFunctionType are used for
// function pointer and reference types as well as Objective-C
// block types:
@@ -583,8 +588,12 @@ private:
}
// When we discover a 'new', we set CanBeExpression to 'false' in order to
// parse the type correctly. Reset that after a comma.
- if (CurrentToken->is(tok::comma))
- Contexts.back().CanBeExpression = true;
+ if (CurrentToken->is(tok::comma)) {
+ if (IsStaticAssert)
+ Contexts.back().InStaticAssertFirstArgument = false;
+ else
+ Contexts.back().CanBeExpression = true;
+ }
if (Style.isTableGen()) {
if (CurrentToken->is(tok::comma)) {
@@ -2144,6 +2153,7 @@ private:
bool CaretFound = false;
bool InCpp11AttributeSpecifier = false;
bool InCSharpAttributeSpecifier = false;
+ bool InStaticAssertFirstArgument = false;
bool VerilogAssignmentFound = false;
// Whether the braces may mean concatenation instead of structure or array
// literal.
@@ -2440,7 +2450,8 @@ private:
} else if (Current.isPointerOrReference()) {
Current.setType(determineStarAmpUsage(
Current,
- Contexts.back().CanBeExpression && Contexts.back().IsExpression,
+ (Contexts.back().CanBeExpression && Contexts.back().IsExpression) ||
+ Contexts.back().InStaticAssertFirstArgument,
Contexts.back().ContextType == Context::TemplateArgument));
} else if (Current.isOneOf(tok::minus, tok::plus, tok::caret) ||
(Style.isVerilog() && Current.is(tok::pipe))) {
diff --git a/clang/lib/Format/WhitespaceManager.cpp b/clang/lib/Format/WhitespaceManager.cpp
index f24b8ab..406c77c 100644
--- a/clang/lib/Format/WhitespaceManager.cpp
+++ b/clang/lib/Format/WhitespaceManager.cpp
@@ -591,7 +591,8 @@ static unsigned AlignTokens(const FormatStyle &Style, F &&Matches,
CurrentChangeWidthRight = CurrentChange.TokenLength;
const FormatToken *MatchingParenToEncounter = nullptr;
for (unsigned J = I + 1;
- J != E && (Changes[J].NewlinesBefore == 0 || MatchingParenToEncounter);
+ J != E && (Changes[J].NewlinesBefore == 0 ||
+ MatchingParenToEncounter || Changes[J].IsAligned);
++J) {
const auto &Change = Changes[J];
const auto *Tok = Change.Tok;
diff --git a/clang/lib/Frontend/ASTUnit.cpp b/clang/lib/Frontend/ASTUnit.cpp
index 6cc7094..1169acb 100644
--- a/clang/lib/Frontend/ASTUnit.cpp
+++ b/clang/lib/Frontend/ASTUnit.cpp
@@ -518,14 +518,14 @@ class ASTInfoCollector : public ASTReaderListener {
LangOptions &LangOpts;
CodeGenOptions &CodeGenOpts;
TargetOptions &TargetOpts;
- unsigned &Counter;
+ uint32_t &Counter;
public:
ASTInfoCollector(HeaderSearchOptions &HSOpts,
std::string &SpecificModuleCachePath,
PreprocessorOptions &PPOpts, LangOptions &LangOpts,
CodeGenOptions &CodeGenOpts, TargetOptions &TargetOpts,
- unsigned &Counter)
+ uint32_t &Counter)
: HSOpts(HSOpts), SpecificModuleCachePath(SpecificModuleCachePath),
PPOpts(PPOpts), LangOpts(LangOpts), CodeGenOpts(CodeGenOpts),
TargetOpts(TargetOpts), Counter(Counter) {}
@@ -577,7 +577,7 @@ public:
}
void ReadCounter(const serialization::ModuleFile &M,
- unsigned NewCounter) override {
+ uint32_t NewCounter) override {
Counter = NewCounter;
}
};
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp
index 8602be1..b88d9f8 100644
--- a/clang/lib/Frontend/InitPreprocessor.cpp
+++ b/clang/lib/Frontend/InitPreprocessor.cpp
@@ -1516,6 +1516,9 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
if (LangOpts.PointerAuthIntrinsics)
Builder.defineMacro("__PTRAUTH__");
+ if (CGOpts.Dwarf2CFIAsm)
+ Builder.defineMacro("__GCC_HAVE_DWARF2_CFI_ASM");
+
// Get other target #defines.
TI.getTargetDefines(LangOpts, Builder);
}
@@ -1542,6 +1545,9 @@ void clang::InitializePreprocessor(Preprocessor &PP,
llvm::raw_string_ostream Predefines(PredefineBuffer);
MacroBuilder Builder(Predefines);
+ // Ensure that the initial value of __COUNTER__ is hooked up.
+ PP.setCounterValue(InitOpts.InitialCounterValue);
+
// Emit line markers for various builtin sections of the file. The 3 here
// marks <built-in> as being a system header, which suppresses warnings when
// the same macro is defined multiple times.
diff --git a/clang/lib/Frontend/TextDiagnostic.cpp b/clang/lib/Frontend/TextDiagnostic.cpp
index aea3e72..1003218 100644
--- a/clang/lib/Frontend/TextDiagnostic.cpp
+++ b/clang/lib/Frontend/TextDiagnostic.cpp
@@ -349,14 +349,13 @@ private:
/// When the source code line we want to print is too long for
/// the terminal, select the "interesting" region.
-static void selectInterestingSourceRegion(std::string &SourceLine,
- std::string &CaretLine,
- std::string &FixItInsertionLine,
- Columns NonGutterColumns,
- const SourceColumnMap &Map) {
- Columns CaretColumns = Columns(CaretLine.size());
- Columns FixItColumns =
- Columns(llvm::sys::locale::columnWidth(FixItInsertionLine));
+static void selectInterestingSourceRegion(
+ std::string &SourceLine, std::string &CaretLine,
+ std::string &FixItInsertionLine, Columns NonGutterColumns,
+ const SourceColumnMap &Map,
+ SmallVectorImpl<clang::TextDiagnostic::StyleRange> &Styles) {
+ Columns CaretColumns = CaretLine.size();
+ Columns FixItColumns = llvm::sys::locale::columnWidth(FixItInsertionLine);
Columns MaxColumns =
std::max({Map.columns().V, CaretColumns.V, FixItColumns.V});
// if the number of columns is less than the desired number we're done
@@ -369,13 +368,11 @@ static void selectInterestingSourceRegion(std::string &SourceLine,
// Find the slice that we need to display the full caret line
// correctly.
Columns CaretStart = 0, CaretEnd = CaretLine.size();
- for (; CaretStart != CaretEnd; CaretStart = CaretStart.next())
- if (!isWhitespace(CaretLine[CaretStart.V]))
- break;
+ while (CaretStart != CaretEnd && isWhitespace(CaretLine[CaretStart.V]))
+ CaretStart = CaretStart.next();
- for (; CaretEnd != CaretStart; CaretEnd = CaretEnd.prev())
- if (!isWhitespace(CaretLine[CaretEnd.V - 1]))
- break;
+ while (CaretEnd != CaretStart && isWhitespace(CaretLine[CaretEnd.V]))
+ CaretEnd = CaretEnd.prev();
// caret has already been inserted into CaretLine so the above whitespace
// check is guaranteed to include the caret
@@ -516,13 +513,45 @@ static void selectInterestingSourceRegion(std::string &SourceLine,
assert(FrontColumnsRemoved + ColumnsKept + BackColumnsRemoved >
NonGutterColumns);
+ // Since we've modified the SourceLine, we also need to adjust the line's
+ // highlighting information. In particular, if we've removed
+ // from the front of the line, we need to move the style ranges to the
+ // left and remove unneeded ranges.
+ // Note in particular that variables like CaretEnd are defined in the
+ // CaretLine, which only contains ASCII, while the style ranges are defined in
+ // the source line, where we have to care for the byte-index != column-index
+ // case.
+ Bytes BytesRemoved =
+ FrontColumnsRemoved > FrontEllipse.size()
+ ? (Map.columnToByte(FrontColumnsRemoved) - Bytes(FrontEllipse.size()))
+ : 0;
+ Bytes CodeEnd =
+ CaretEnd < Map.columns() ? Map.columnToByte(CaretEnd.V) : CaretEnd.V;
+ for (TextDiagnostic::StyleRange &R : Styles) {
+ // Remove style ranges before and after the new truncated snippet.
+ if (R.Start >= static_cast<unsigned>(CodeEnd.V) ||
+ R.End < static_cast<unsigned>(BytesRemoved.V)) {
+ R.Start = R.End = std::numeric_limits<int>::max();
+ continue;
+ }
+ // Move them left. (Note that this can wrap R.Start, but that doesn't
+ // matter).
+ R.Start -= BytesRemoved.V;
+ R.End -= BytesRemoved.V;
+
+ // Don't leak into the ellipse at the end.
+ if (R.Start < static_cast<unsigned>(CodeEnd.V) &&
+ R.End > static_cast<unsigned>(CodeEnd.V))
+ R.End = CodeEnd.V + 1; // R.End is inclusive.
+ }
+
// The line needs some truncation, and we'd prefer to keep the front
// if possible, so remove the back
if (BackColumnsRemoved > Columns(BackEllipse.size()))
SourceLine.replace(SourceEnd.V, std::string::npos, BackEllipse);
// If that's enough then we're done
- if (FrontColumnsRemoved + ColumnsKept <= Columns(NonGutterColumns))
+ if (FrontColumnsRemoved + ColumnsKept <= NonGutterColumns)
return;
// Otherwise remove the front as well
@@ -1391,6 +1420,11 @@ void TextDiagnostic::emitSnippetAndCaret(
OS.indent(MaxLineNoDisplayWidth + 2) << "| ";
};
+ Columns MessageLength = DiagOpts.MessageLength;
+ // If we don't have enough columns available, just abort now.
+ if (MessageLength != 0 && MessageLength <= Columns(MaxLineNoDisplayWidth + 4))
+ return;
+
// Prepare source highlighting information for the lines we're about to
// emit, starting from the first line.
std::unique_ptr<SmallVector<StyleRange>[]> SourceStyles =
@@ -1450,10 +1484,14 @@ void TextDiagnostic::emitSnippetAndCaret(
// If the source line is too long for our terminal, select only the
// "interesting" source region within that line.
- Columns MessageLength = DiagOpts.MessageLength;
- if (MessageLength.V != 0)
+ if (MessageLength != 0) {
+ Columns NonGutterColumns = MessageLength;
+ if (MaxLineNoDisplayWidth != 0)
+ NonGutterColumns -= Columns(MaxLineNoDisplayWidth + 4);
selectInterestingSourceRegion(SourceLine, CaretLine, FixItInsertionLine,
- MessageLength, SourceColMap);
+ NonGutterColumns, SourceColMap,
+ SourceStyles[LineNo - Lines.first]);
+ }
// If we are in -fdiagnostics-print-source-range-info mode, we are trying
// to produce easily machine parsable output. Add a space before the
@@ -1508,7 +1546,7 @@ void TextDiagnostic::emitSnippet(StringRef SourceLine,
// Print the source line one character at a time.
bool PrintReversed = false;
std::optional<llvm::raw_ostream::Colors> CurrentColor;
- size_t I = 0;
+ size_t I = 0; // Bytes.
while (I < SourceLine.size()) {
auto [Str, WasPrintable] =
printableTextForNextCharacter(SourceLine, &I, DiagOpts.TabStop);
diff --git a/clang/lib/Headers/module.modulemap b/clang/lib/Headers/module.modulemap
index 2e4d533..c13dd3f 100644
--- a/clang/lib/Headers/module.modulemap
+++ b/clang/lib/Headers/module.modulemap
@@ -253,6 +253,11 @@ module _Builtin_stdbool [system] {
export *
}
+module _Builtin_stdckdint [system] {
+ header "stdckdint.h"
+ export *
+}
+
module _Builtin_stdcountof [system] {
header "stdcountof.h"
export *
diff --git a/clang/lib/Lex/ModuleMap.cpp b/clang/lib/Lex/ModuleMap.cpp
index 637a08f..b8202ea 100644
--- a/clang/lib/Lex/ModuleMap.cpp
+++ b/clang/lib/Lex/ModuleMap.cpp
@@ -258,6 +258,7 @@ static bool isBuiltinHeaderName(StringRef FileName) {
.Case("stdarg.h", true)
.Case("stdatomic.h", true)
.Case("stdbool.h", true)
+ .Case("stdckdint.h", true)
.Case("stdcountof.h", true)
.Case("stddef.h", true)
.Case("stdint.h", true)
diff --git a/clang/lib/Lex/PPMacroExpansion.cpp b/clang/lib/Lex/PPMacroExpansion.cpp
index dd80ae5..5efa4b5 100644
--- a/clang/lib/Lex/PPMacroExpansion.cpp
+++ b/clang/lib/Lex/PPMacroExpansion.cpp
@@ -1735,7 +1735,19 @@ void Preprocessor::ExpandBuiltinMacro(Token &Tok) {
Diag(getLastFPEvalPragmaLocation(), diag::note_pragma_entered_here);
}
} else if (II == Ident__COUNTER__) {
- // __COUNTER__ expands to a simple numeric value.
+ Diag(Tok.getLocation(),
+ getLangOpts().C2y ? diag::warn_counter : diag::ext_counter);
+ // __COUNTER__ expands to a simple numeric value that must be less than
+ // 2147483647.
+ constexpr uint32_t MaxPosValue = std::numeric_limits<int32_t>::max();
+ if (CounterValue > MaxPosValue) {
+ Diag(Tok.getLocation(), diag::err_counter_overflow);
+ // Retain the maximal value so we don't issue conversion-related
+ // diagnostics by overflowing into a long long. While this does produce
+ // a duplicate value, there's no way to ignore this error so there's no
+ // translation anyway.
+ CounterValue = MaxPosValue;
+ }
OS << CounterValue++;
Tok.setKind(tok::numeric_constant);
} else if (II == Ident__has_feature) {
diff --git a/clang/lib/Sema/SemaFunctionEffects.cpp b/clang/lib/Sema/SemaFunctionEffects.cpp
index 8590ee8..4b63eb7 100644
--- a/clang/lib/Sema/SemaFunctionEffects.cpp
+++ b/clang/lib/Sema/SemaFunctionEffects.cpp
@@ -1208,8 +1208,16 @@ private:
return true;
}
- // No Decl, just an Expr. Just check based on its type.
- checkIndirectCall(Call, CalleeExpr->getType());
+ // No Decl, just an Expr. Just check based on its type. Bound member
+ // functions are a special expression type and need to be specially
+ // unpacked.
+ QualType CalleeExprQT = CalleeExpr->getType();
+ if (CalleeExpr->isBoundMemberFunction(Outer.S.getASTContext())) {
+ QualType QT = Expr::findBoundMemberType(CalleeExpr);
+ if (!QT.isNull())
+ CalleeExprQT = QT;
+ }
+ checkIndirectCall(Call, CalleeExprQT);
return true;
}
@@ -1271,7 +1279,15 @@ private:
const CXXConstructorDecl *Ctor = Construct->getConstructor();
CallableInfo CI(*Ctor);
followCall(CI, Construct->getLocation());
+ return true;
+ }
+ bool VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *BTE) override {
+ const CXXDestructorDecl *Dtor = BTE->getTemporary()->getDestructor();
+ if (Dtor != nullptr) {
+ CallableInfo CI(*Dtor);
+ followCall(CI, BTE->getBeginLoc());
+ }
return true;
}
diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp
index f398963..5b3ef1a 100644
--- a/clang/lib/Sema/SemaStmt.cpp
+++ b/clang/lib/Sema/SemaStmt.cpp
@@ -3281,6 +3281,9 @@ static Scope *FindLabeledBreakContinueScope(Sema &S, Scope *CurScope,
SourceLocation LabelLoc,
bool IsContinue) {
assert(Target && "not a named break/continue?");
+
+ Target->markUsed(S.Context);
+
Scope *Found = nullptr;
for (Scope *Scope = CurScope; Scope; Scope = Scope->getParent()) {
if (Scope->isFunctionScope())
diff --git a/clang/lib/Sema/SemaTemplateDeductionGuide.cpp b/clang/lib/Sema/SemaTemplateDeductionGuide.cpp
index ad50600..bfcd397 100644
--- a/clang/lib/Sema/SemaTemplateDeductionGuide.cpp
+++ b/clang/lib/Sema/SemaTemplateDeductionGuide.cpp
@@ -659,7 +659,8 @@ private:
SemaRef, MaterializedTypedefs, NestedPattern,
TransformingOuterPatterns ? &Args : nullptr)
.transform(NewDI);
-
+ if (!NewDI)
+ return nullptr;
// Resolving a wording defect, we also inherit default arguments from the
// constructor.
ExprResult NewDefArg;
diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp
index 280b3c9..c483930 100644
--- a/clang/lib/Sema/SemaType.cpp
+++ b/clang/lib/Sema/SemaType.cpp
@@ -2358,6 +2358,11 @@ QualType Sema::BuildVectorType(QualType CurType, Expr *SizeExpr,
return QualType();
}
+ if (VecSize->isNegative()) {
+ Diag(SizeExpr->getExprLoc(), diag::err_attribute_vec_negative_size);
+ return QualType();
+ }
+
if (CurType->isDependentType())
return Context.getDependentVectorType(CurType, SizeExpr, AttrLoc,
VectorKind::Generic);
@@ -2394,7 +2399,7 @@ QualType Sema::BuildVectorType(QualType CurType, Expr *SizeExpr,
VectorKind::Generic);
}
-QualType Sema::BuildExtVectorType(QualType T, Expr *ArraySize,
+QualType Sema::BuildExtVectorType(QualType T, Expr *SizeExpr,
SourceLocation AttrLoc) {
// Unlike gcc's vector_size attribute, we do not allow vectors to be defined
// in conjunction with complex types (pointers, arrays, functions, etc.).
@@ -2417,35 +2422,40 @@ QualType Sema::BuildExtVectorType(QualType T, Expr *ArraySize,
BIT && CheckBitIntElementType(*this, AttrLoc, BIT))
return QualType();
- if (!ArraySize->isTypeDependent() && !ArraySize->isValueDependent()) {
- std::optional<llvm::APSInt> vecSize =
- ArraySize->getIntegerConstantExpr(Context);
- if (!vecSize) {
+ if (!SizeExpr->isTypeDependent() && !SizeExpr->isValueDependent()) {
+ std::optional<llvm::APSInt> VecSize =
+ SizeExpr->getIntegerConstantExpr(Context);
+ if (!VecSize) {
Diag(AttrLoc, diag::err_attribute_argument_type)
- << "ext_vector_type" << AANT_ArgumentIntegerConstant
- << ArraySize->getSourceRange();
+ << "ext_vector_type" << AANT_ArgumentIntegerConstant
+ << SizeExpr->getSourceRange();
+ return QualType();
+ }
+
+ if (VecSize->isNegative()) {
+ Diag(SizeExpr->getExprLoc(), diag::err_attribute_vec_negative_size);
return QualType();
}
- if (!vecSize->isIntN(32)) {
+ if (!VecSize->isIntN(32)) {
Diag(AttrLoc, diag::err_attribute_size_too_large)
- << ArraySize->getSourceRange() << "vector";
+ << SizeExpr->getSourceRange() << "vector";
return QualType();
}
// Unlike gcc's vector_size attribute, the size is specified as the
// number of elements, not the number of bytes.
- unsigned vectorSize = static_cast<unsigned>(vecSize->getZExtValue());
+ unsigned VectorSize = static_cast<unsigned>(VecSize->getZExtValue());
- if (vectorSize == 0) {
+ if (VectorSize == 0) {
Diag(AttrLoc, diag::err_attribute_zero_size)
- << ArraySize->getSourceRange() << "vector";
+ << SizeExpr->getSourceRange() << "vector";
return QualType();
}
- return Context.getExtVectorType(T, vectorSize);
+ return Context.getExtVectorType(T, VectorSize);
}
- return Context.getDependentSizedExtVectorType(T, ArraySize, AttrLoc);
+ return Context.getDependentSizedExtVectorType(T, SizeExpr, AttrLoc);
}
QualType Sema::BuildMatrixType(QualType ElementTy, Expr *NumRows, Expr *NumCols,
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index e3106f8d..d552821 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -225,7 +225,7 @@ bool ChainedASTReaderListener::ReadPreprocessorOptions(
}
void ChainedASTReaderListener::ReadCounter(const serialization::ModuleFile &M,
- unsigned Value) {
+ uint32_t Value) {
First->ReadCounter(M, Value);
Second->ReadCounter(M, Value);
}
@@ -973,7 +973,7 @@ bool PCHValidator::ReadHeaderSearchOptions(const HeaderSearchOptions &HSOpts,
PP.getPreprocessorOpts());
}
-void PCHValidator::ReadCounter(const ModuleFile &M, unsigned Value) {
+void PCHValidator::ReadCounter(const ModuleFile &M, uint32_t Value) {
PP.setCounterValue(Value);
}
diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp
index 3ac338e..b1fd151 100644
--- a/clang/lib/Serialization/ASTWriter.cpp
+++ b/clang/lib/Serialization/ASTWriter.cpp
@@ -4374,8 +4374,7 @@ private:
// parent of parent. We DON'T remove the enum constant from its parent. So
// we don't need to care about merging problems here.
if (auto *ECD = dyn_cast<EnumConstantDecl>(D);
- ECD && DC.isFileContext() && ECD->getOwningModule() &&
- ECD->getTopLevelOwningNamedModule()->isNamedModule()) {
+ ECD && DC.isFileContext() && ECD->getTopLevelOwningNamedModule()) {
if (llvm::all_of(
DC.noload_lookup(
cast<EnumDecl>(ECD->getDeclContext())->getDeclName()),
diff --git a/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
index 70baab5..ec7ef23 100644
--- a/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
@@ -6,41 +6,45 @@
//
//===----------------------------------------------------------------------===//
//
-// This file defines a variety of memory management related checkers, such as
+// This file defines checkers that report memory management errors such as
// leak, double free, and use-after-free.
//
-// The following checkers are defined here:
+// The logic for modeling memory allocations is implemented in the checker
+// family which is called 'MallocChecker' for historical reasons. (This name is
+// inaccurate, something like 'DynamicMemory' would be more precise.)
//
-// * MallocChecker
-// Despite its name, it models all sorts of memory allocations and
-// de- or reallocation, including but not limited to malloc, free,
-// relloc, new, delete. It also reports on a variety of memory misuse
-// errors.
-// Many other checkers interact very closely with this checker, in fact,
-// most are merely options to this one. Other checkers may register
-// MallocChecker, but do not enable MallocChecker's reports (more details
-// to follow around its field, ChecksEnabled).
-// It also has a boolean "Optimistic" checker option, which if set to true
-// will cause the checker to model user defined memory management related
-// functions annotated via the attribute ownership_takes, ownership_holds
-// and ownership_returns.
+// The reports produced by this backend are exposed through several frontends:
+// * MallocChecker: reports all misuse of dynamic memory allocated by
+// malloc, related functions (like calloc, realloc etc.) and the functions
+// annotated by ownership_returns. (Here the name "MallocChecker" is
+// reasonably accurate; don't confuse this checker frontend with the whole
+// misnamed family.)
+// * NewDeleteChecker: reports most misuse (anything but memory leaks) of
+// memory managed by the C++ operators new and new[].
+// * NewDeleteLeaksChecker: reports leaks of dynamic memory allocated by
+// the C++ operators new and new[].
+// * MismatchedDeallocatorChecker: reports situations where the allocation
+// and deallocation is mismatched, e.g. memory allocated via malloc is
+// passed to operator delete.
+// * InnerPointerChecker: reports use of pointers to the internal buffer of
+// a std::string instance after operations that invalidate them.
+// * TaintedAllocChecker: reports situations where the size argument of a
+// memory allocation function or array new operator is tainted (i.e. comes
+// from an untrusted source and can be controlled by an attacker).
//
-// * NewDeleteChecker
-// Enables the modeling of new, new[], delete, delete[] in MallocChecker,
-// and checks for related double-free and use-after-free errors.
+// In addition to these frontends this file also defines the registration
+// functions for "unix.DynamicMemoryModeling". This registers the callbacks of
+// the checker family MallocChecker without enabling any of the frontends and
+// and handle two checker options which are attached to this "modeling
+// checker" because they affect multiple checker frontends.
//
-// * NewDeleteLeaksChecker
-// Checks for leaks related to new, new[], delete, delete[].
-// Depends on NewDeleteChecker.
-//
-// * MismatchedDeallocatorChecker
-// Enables checking whether memory is deallocated with the corresponding
-// allocation function in MallocChecker, such as malloc() allocated
-// regions are only freed by free(), new by delete, new[] by delete[].
-//
-// InnerPointerChecker interacts very closely with MallocChecker, but unlike
-// the above checkers, it has it's own file, hence the many InnerPointerChecker
-// related headers and non-static functions.
+// Note that what the users see as the checker "cplusplus.InnerPointer" is a
+// combination of the frontend InnerPointerChecker (within this family) which
+// emits the bug reports and a separate checker class (also named
+// InnerPointerChecker) which is defined in InnerPointerChecker.cpp and does a
+// significant part of the modeling. This cooperation is enabled by several
+// non-static helper functions that are defined within this translation unit
+// and used in InnerPointerChecker.cpp.
//
//===----------------------------------------------------------------------===//
diff --git a/clang/lib/StaticAnalyzer/Core/CallEvent.cpp b/clang/lib/StaticAnalyzer/Core/CallEvent.cpp
index 62460cc..d04c827 100644
--- a/clang/lib/StaticAnalyzer/Core/CallEvent.cpp
+++ b/clang/lib/StaticAnalyzer/Core/CallEvent.cpp
@@ -230,13 +230,11 @@ static void findPtrToConstParams(llvm::SmallSet<unsigned, 4> &PreserveArgs,
}
ProgramStateRef CallEvent::invalidateRegions(unsigned BlockCount,
- ProgramStateRef Orig) const {
- ProgramStateRef Result = (Orig ? Orig : getState());
-
+ ProgramStateRef State) const {
// Don't invalidate anything if the callee is marked pure/const.
- if (const Decl *callee = getDecl())
- if (callee->hasAttr<PureAttr>() || callee->hasAttr<ConstAttr>())
- return Result;
+ if (const Decl *Callee = getDecl())
+ if (Callee->hasAttr<PureAttr>() || Callee->hasAttr<ConstAttr>())
+ return State;
SmallVector<SVal, 8> ValuesToInvalidate;
RegionAndSymbolInvalidationTraits ETraits;
@@ -278,10 +276,10 @@ ProgramStateRef CallEvent::invalidateRegions(unsigned BlockCount,
// Invalidate designated regions using the batch invalidation API.
// NOTE: Even if RegionsToInvalidate is empty, we may still invalidate
// global variables.
- return Result->invalidateRegions(ValuesToInvalidate, getCFGElementRef(),
- BlockCount, getLocationContext(),
- /*CausedByPointerEscape*/ true,
- /*Symbols=*/nullptr, this, &ETraits);
+ return State->invalidateRegions(ValuesToInvalidate, getCFGElementRef(),
+ BlockCount, getLocationContext(),
+ /*CausedByPointerEscape*/ true,
+ /*Symbols=*/nullptr, this, &ETraits);
}
ProgramPoint CallEvent::getProgramPoint(bool IsPreVisit,
diff --git a/clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp b/clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp
index 75d7e26..00e3ef8 100644
--- a/clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp
+++ b/clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp
@@ -1013,7 +1013,7 @@ void ExprEngine::VisitCXXNewExpr(const CXXNewExpr *CNE, ExplodedNode *Pred,
// FIXME: Once we figure out how we want allocators to work,
// we should be using the usual pre-/(default-)eval-/post-call checkers
// here.
- State = Call->invalidateRegions(blockCount);
+ State = Call->invalidateRegions(blockCount, State);
if (!State)
return;
diff --git a/clang/test/AST/ByteCode/cxx11.cpp b/clang/test/AST/ByteCode/cxx11.cpp
index 427d3a1..e283a7b 100644
--- a/clang/test/AST/ByteCode/cxx11.cpp
+++ b/clang/test/AST/ByteCode/cxx11.cpp
@@ -374,7 +374,7 @@ namespace GH150709 {
namespace DiscardedAddrLabel {
void foo(void) {
L:
- *&&L; // both-error {{indirection not permitted}} \
+ *&&L; // both-error {{indirection not permitted on operand of type 'void *'}} \
// both-warning {{expression result unused}}
}
}
diff --git a/clang/test/C/C2y/n3457.c b/clang/test/C/C2y/n3457.c
new file mode 100644
index 0000000..d71a3f3
--- /dev/null
+++ b/clang/test/C/C2y/n3457.c
@@ -0,0 +1,38 @@
+// RUN: %clang_cc1 -verify=ext -std=c23 -pedantic %s
+// RUN: %clang_cc1 -verify=ext -pedantic -x c++ %s
+// RUN: %clang_cc1 -verify=pre -std=c2y -pedantic -Wpre-c2y-compat %s
+
+/* WG14 N3457: Clang 22
+ * The __COUNTER__ predefined macro
+ *
+ * This predefined macro was supported as an extension in earlier versions of
+ * Clang, but the required diagnostics for the limits were not added until 22.
+ */
+
+// Ensure that __COUNTER__ starts from 0.
+static_assert(__COUNTER__ == 0); /* ext-warning {{'__COUNTER__' is a C2y extension}}
+ pre-warning {{'__COUNTER__' is incompatible with standards before C2y}}
+ */
+
+// Ensure that the produced value can be used with token concatenation.
+#define CAT_IMPL(a, b) a ## b
+#define CAT(a, b) CAT_IMPL(a, b)
+#define NAME_WITH_COUNTER(a) CAT(a, __COUNTER__)
+void test() {
+ // Because this is the 2nd expansion, this defines test1.
+ int NAME_WITH_COUNTER(test); /* ext-warning {{'__COUNTER__' is a C2y extension}}
+ pre-warning {{'__COUNTER__' is incompatible with standards before C2y}}
+ */
+ int other_test = test1; // Ok
+}
+
+// Ensure that __COUNTER__ increments each time you mention it.
+static_assert(__COUNTER__ == 2); /* ext-warning {{'__COUNTER__' is a C2y extension}}
+ pre-warning {{'__COUNTER__' is incompatible with standards before C2y}}
+ */
+static_assert(__COUNTER__ == 3); /* ext-warning {{'__COUNTER__' is a C2y extension}}
+ pre-warning {{'__COUNTER__' is incompatible with standards before C2y}}
+ */
+static_assert(__COUNTER__ == 4); /* ext-warning {{'__COUNTER__' is a C2y extension}}
+ pre-warning {{'__COUNTER__' is incompatible with standards before C2y}}
+ */
diff --git a/clang/test/C/C2y/n3457_1.c b/clang/test/C/C2y/n3457_1.c
new file mode 100644
index 0000000..76c5a0b
--- /dev/null
+++ b/clang/test/C/C2y/n3457_1.c
@@ -0,0 +1,20 @@
+// RUN: %clang_cc1 -verify -std=c2y -finitial-counter-value=2147483646 %s
+
+// The value produced needs to be a type that's representable with a signed
+// long. However, the actual type it expands to does *not* need to be forced to
+// be signed long because that would generally mean suffixing the value with L,
+// which would be very surprising for folks using this to generate unique ids.
+// We'll test this by ensuring the largest value can be expanded properly and
+// an assertion that signed long is always at least four bytes wide (which is
+// what's required to represent that maximal value).
+//
+// So we set the initial counter value to 2147483646, we'll validate that,
+// increment it once to get to the maximal value and ensure there's no
+// diagnostic, then increment again to ensure we get the constraint violation.
+
+static_assert(__COUNTER__ == 2147483646); // Test and increment
+static_assert(__COUNTER__ == 2147483647); // Test and increment
+
+// This one should fail.
+signed long i = __COUNTER__; // expected-error {{'__COUNTER__' value cannot exceed 2'147'483'647}}
+
diff --git a/clang/test/C/C2y/n3457_2.c b/clang/test/C/C2y/n3457_2.c
new file mode 100644
index 0000000..018c8f4
--- /dev/null
+++ b/clang/test/C/C2y/n3457_2.c
@@ -0,0 +1,10 @@
+// RUN: %clang_cc1 -verify=good -std=c2y -finitial-counter-value=2147483648 %s
+// RUN: %clang_cc1 -verify -std=c2y -finitial-counter-value=2147483648 -DEXPAND_IT %s
+// good-no-diagnostics
+
+// This sets the intial __COUNTER__ value to something that's too big. Setting
+// the value too large is fine. Expanding to a too-large value is not.
+#ifdef EXPAND_IT
+ // This one should fail.
+ signed long i = __COUNTER__; // expected-error {{'__COUNTER__' value cannot exceed 2'147'483'647}}
+#endif
diff --git a/clang/test/CIR/CodeGen/builtins-floating-point.c b/clang/test/CIR/CodeGen/builtins-floating-point.c
index 193cc172..8bdc43c 100644
--- a/clang/test/CIR/CodeGen/builtins-floating-point.c
+++ b/clang/test/CIR/CodeGen/builtins-floating-point.c
@@ -7,14 +7,21 @@
float cosf(float f) {
return __builtin_cosf(f);
- // CHECK: %{{.*}} = cir.cos {{.*}} : !cir.float
+ // CIR: %{{.*}} = cir.cos %{{.*}} : !cir.float
// LLVM: %{{.*}} = call float @llvm.cos.f32(float %{{.*}})
// OGCG: %{{.*}} = call float @llvm.cos.f32(float %{{.*}})
}
double cos(double f) {
return __builtin_cos(f);
- // CIR: {{.+}} = cir.cos {{.+}} : !cir.double
+ // CIR: %{{.*}} = cir.cos %{{.*}} : !cir.double
// LLVM: %{{.*}} = call double @llvm.cos.f64(double %{{.*}})
// OGCG: %{{.*}} = call double @llvm.cos.f64(double %{{.*}})
}
+
+float ceil(float f) {
+ return __builtin_ceilf(f);
+ // CIR: %{{.*}} = cir.ceil %{{.*}} : !cir.float
+ // LLVM: %{{.*}} = call float @llvm.ceil.f32(float %{{.*}})
+ // OGCG: %{{.*}} = call float @llvm.ceil.f32(float %{{.*}})
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexp_v_16.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexp_v_16.c
new file mode 100644
index 0000000..a0d5845
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexp_v_16.c
@@ -0,0 +1,131 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x -target-feature +zvfh \
+// RUN: -target-feature +xsfvfexp16e -disable-O0-optnone \
+// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexp_v_f16mf4(
+// CHECK-RV64-SAME: <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexp.nxv1f16.i64(<vscale x 1 x half> poison, <vscale x 1 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexp_v_f16mf4(vfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16mf4(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexp_v_f16mf2(
+// CHECK-RV64-SAME: <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexp.nxv2f16.i64(<vscale x 2 x half> poison, <vscale x 2 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexp_v_f16mf2(vfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16mf2(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexp_v_f16m1(
+// CHECK-RV64-SAME: <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexp.nxv4f16.i64(<vscale x 4 x half> poison, <vscale x 4 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexp_v_f16m1(vfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m1(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexp_v_f16m2(
+// CHECK-RV64-SAME: <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexp.nxv8f16.i64(<vscale x 8 x half> poison, <vscale x 8 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexp_v_f16m2(vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m2(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexp_v_f16m4(
+// CHECK-RV64-SAME: <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexp.nxv16f16.i64(<vscale x 16 x half> poison, <vscale x 16 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexp_v_f16m4(vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m4(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexp_v_f16m8(
+// CHECK-RV64-SAME: <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexp.nxv32f16.i64(<vscale x 32 x half> poison, <vscale x 32 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexp_v_f16m8(vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m8(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexp_v_f16mf4_m(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexp.mask.nxv1f16.i64(<vscale x 1 x half> poison, <vscale x 1 x half> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexp_v_f16mf4_m(vbool64_t vm, vfloat16mf4_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_v_f16mf4_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexp_v_f16mf2_m(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexp.mask.nxv2f16.i64(<vscale x 2 x half> poison, <vscale x 2 x half> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexp_v_f16mf2_m(vbool32_t vm, vfloat16mf2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_v_f16mf2_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexp_v_f16m1_m(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexp.mask.nxv4f16.i64(<vscale x 4 x half> poison, <vscale x 4 x half> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexp_v_f16m1_m(vbool16_t vm, vfloat16m1_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_v_f16m1_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexp_v_f16m2_m(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexp.mask.nxv8f16.i64(<vscale x 8 x half> poison, <vscale x 8 x half> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexp_v_f16m2_m(vbool8_t vm, vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m2_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexp_v_f16m4_m(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexp.mask.nxv16f16.i64(<vscale x 16 x half> poison, <vscale x 16 x half> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexp_v_f16m4_m(vbool4_t vm, vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m4_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexp_v_f16m8_m(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexp.mask.nxv32f16.i64(<vscale x 32 x half> poison, <vscale x 32 x half> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexp_v_f16m8_m(vbool2_t vm, vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m8_m(vm, vs2, vl);
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexp_v_32.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexp_v_32.c
new file mode 100644
index 0000000..25d0991
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexp_v_32.c
@@ -0,0 +1,111 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x -target-feature +zve32f \
+// RUN: -target-feature +xsfvfexp32e -disable-O0-optnone \
+// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexp_v_f32mf2(
+// CHECK-RV64-SAME: <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexp.nxv1f32.i64(<vscale x 1 x float> poison, <vscale x 1 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexp_v_f32mf2(vfloat32mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32mf2(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexp_v_f32m1(
+// CHECK-RV64-SAME: <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexp.nxv2f32.i64(<vscale x 2 x float> poison, <vscale x 2 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexp_v_f32m1(vfloat32m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m1(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexp_v_f32m2(
+// CHECK-RV64-SAME: <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexp.nxv4f32.i64(<vscale x 4 x float> poison, <vscale x 4 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexp_v_f32m2(vfloat32m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m2(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexp_v_f32m4(
+// CHECK-RV64-SAME: <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexp.nxv8f32.i64(<vscale x 8 x float> poison, <vscale x 8 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexp_v_f32m4(vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m4(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexp_v_f32m8(
+// CHECK-RV64-SAME: <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexp.nxv16f32.i64(<vscale x 16 x float> poison, <vscale x 16 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexp_v_f32m8(vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m8(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexp_v_f32mf2_m(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexp.mask.nxv1f32.i64(<vscale x 1 x float> poison, <vscale x 1 x float> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexp_v_f32mf2_m(vbool64_t vm, vfloat32mf2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_v_f32mf2_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexp_v_f32m1_m(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexp.mask.nxv2f32.i64(<vscale x 2 x float> poison, <vscale x 2 x float> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexp_v_f32m1_m(vbool32_t vm, vfloat32m1_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_v_f32m1_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexp_v_f32m2_m(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexp.mask.nxv4f32.i64(<vscale x 4 x float> poison, <vscale x 4 x float> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexp_v_f32m2_m(vbool16_t vm, vfloat32m2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_v_f32m2_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexp_v_f32m4_m(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexp.mask.nxv8f32.i64(<vscale x 8 x float> poison, <vscale x 8 x float> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexp_v_f32m4_m(vbool8_t vm, vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m4_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexp_v_f32m8_m(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexp.mask.nxv16f32.i64(<vscale x 16 x float> poison, <vscale x 16 x float> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexp_v_f32m8_m(vbool4_t vm, vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m8_m(vm, vs2, vl);
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexp_v_bf.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexp_v_bf.c
new file mode 100644
index 0000000..9fc332a
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexp_v_bf.c
@@ -0,0 +1,135 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x -target-feature +zve32f \
+// RUN: -target-feature +zvfbfmin -target-feature +xsfvfbfexp16e -disable-O0-optnone \
+// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x bfloat> @test_sf_vfexp_v_bf16mf4(
+// CHECK-RV64-SAME: <vscale x 1 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x bfloat> @llvm.riscv.sf.vfexp.nxv1bf16.i64(<vscale x 1 x bfloat> poison, <vscale x 1 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x bfloat> [[TMP0]]
+//
+vbfloat16mf4_t test_sf_vfexp_v_bf16mf4(vbfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16mf4(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x bfloat> @test_sf_vfexp_v_bf16mf2(
+// CHECK-RV64-SAME: <vscale x 2 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x bfloat> @llvm.riscv.sf.vfexp.nxv2bf16.i64(<vscale x 2 x bfloat> poison, <vscale x 2 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x bfloat> [[TMP0]]
+//
+vbfloat16mf2_t test_sf_vfexp_v_bf16mf2(vbfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16mf2(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x bfloat> @test_sf_vfexp_v_bf16m1(
+// CHECK-RV64-SAME: <vscale x 4 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x bfloat> @llvm.riscv.sf.vfexp.nxv4bf16.i64(<vscale x 4 x bfloat> poison, <vscale x 4 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x bfloat> [[TMP0]]
+//
+vbfloat16m1_t test_sf_vfexp_v_bf16m1(vbfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m1(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x bfloat> @test_sf_vfexp_v_bf16m2(
+// CHECK-RV64-SAME: <vscale x 8 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x bfloat> @llvm.riscv.sf.vfexp.nxv8bf16.i64(<vscale x 8 x bfloat> poison, <vscale x 8 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x bfloat> [[TMP0]]
+//
+vbfloat16m2_t test_sf_vfexp_v_bf16m2(vbfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m2(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x bfloat> @test_sf_vfexp_v_bf16m4(
+// CHECK-RV64-SAME: <vscale x 16 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x bfloat> @llvm.riscv.sf.vfexp.nxv16bf16.i64(<vscale x 16 x bfloat> poison, <vscale x 16 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x bfloat> [[TMP0]]
+//
+vbfloat16m4_t test_sf_vfexp_v_bf16m4(vbfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m4(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x bfloat> @test_sf_vfexp_v_bf16m8(
+// CHECK-RV64-SAME: <vscale x 32 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x bfloat> @llvm.riscv.sf.vfexp.nxv32bf16.i64(<vscale x 32 x bfloat> poison, <vscale x 32 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
+//
+vbfloat16m8_t test_sf_vfexp_v_bf16m8(vbfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m8(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x bfloat> @test_sf_vfexp_v_bf16mf4_m(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv1bf16.i64(<vscale x 1 x bfloat> poison, <vscale x 1 x bfloat> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 1 x bfloat> [[TMP0]]
+//
+vbfloat16mf4_t test_sf_vfexp_v_bf16mf4_m(vbool64_t vm, vbfloat16mf4_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_v_bf16mf4_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x bfloat> @test_sf_vfexp_v_bf16mf2_m(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv2bf16.i64(<vscale x 2 x bfloat> poison, <vscale x 2 x bfloat> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 2 x bfloat> [[TMP0]]
+//
+vbfloat16mf2_t test_sf_vfexp_v_bf16mf2_m(vbool32_t vm, vbfloat16mf2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_v_bf16mf2_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x bfloat> @test_sf_vfexp_v_bf16m1_m(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv4bf16.i64(<vscale x 4 x bfloat> poison, <vscale x 4 x bfloat> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 4 x bfloat> [[TMP0]]
+//
+vbfloat16m1_t test_sf_vfexp_v_bf16m1_m(vbool16_t vm, vbfloat16m1_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m1_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x bfloat> @test_sf_vfexp_v_bf16m2_m(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv8bf16.i64(<vscale x 8 x bfloat> poison, <vscale x 8 x bfloat> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 8 x bfloat> [[TMP0]]
+//
+vbfloat16m2_t test_sf_vfexp_v_bf16m2_m(vbool8_t vm, vbfloat16m2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m2_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x bfloat> @test_sf_vfexp_v_bf16m4_m(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv16bf16.i64(<vscale x 16 x bfloat> poison, <vscale x 16 x bfloat> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 16 x bfloat> [[TMP0]]
+//
+vbfloat16m4_t test_sf_vfexp_v_bf16m4_m(vbool4_t vm, vbfloat16m4_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m4_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x bfloat> @test_sf_vfexp_v_bf16m8_m(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv32bf16.i64(<vscale x 32 x bfloat> poison, <vscale x 32 x bfloat> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
+//
+vbfloat16m8_t test_sf_vfexp_v_bf16m8_m(vbool2_t vm, vbfloat16m8_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m8_m(vm, vs2, vl);
+}
+
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexpa_v.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexpa_v.c
new file mode 100644
index 0000000..67a9220
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexpa_v.c
@@ -0,0 +1,234 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 4
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64f -target-feature +zvfh \
+// RUN: -target-feature +xsfvfexpa -disable-O0-optnone \
+// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexpa_v_f16mf4(
+// CHECK-RV64-SAME: <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexpa.nxv1f16.i64(<vscale x 1 x half> poison, <vscale x 1 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexpa_v_f16mf4(vfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16mf4(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexpa_v_f16mf2(
+// CHECK-RV64-SAME: <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexpa.nxv2f16.i64(<vscale x 2 x half> poison, <vscale x 2 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexpa_v_f16mf2(vfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16mf2(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexpa_v_f16m1(
+// CHECK-RV64-SAME: <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexpa.nxv4f16.i64(<vscale x 4 x half> poison, <vscale x 4 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexpa_v_f16m1(vfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m1(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexpa_v_f16m2(
+// CHECK-RV64-SAME: <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexpa.nxv8f16.i64(<vscale x 8 x half> poison, <vscale x 8 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexpa_v_f16m2(vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m2(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexpa_v_f16m4(
+// CHECK-RV64-SAME: <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexpa.nxv16f16.i64(<vscale x 16 x half> poison, <vscale x 16 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexpa_v_f16m4(vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m4(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexpa_v_f16m8(
+// CHECK-RV64-SAME: <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexpa.nxv32f16.i64(<vscale x 32 x half> poison, <vscale x 32 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexpa_v_f16m8(vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m8(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexpa_v_f32mf2(
+// CHECK-RV64-SAME: <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexpa.nxv1f32.i64(<vscale x 1 x float> poison, <vscale x 1 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexpa_v_f32mf2(vfloat32mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32mf2(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexpa_v_f32m1(
+// CHECK-RV64-SAME: <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexpa.nxv2f32.i64(<vscale x 2 x float> poison, <vscale x 2 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexpa_v_f32m1(vfloat32m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m1(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexpa_v_f32m2(
+// CHECK-RV64-SAME: <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexpa.nxv4f32.i64(<vscale x 4 x float> poison, <vscale x 4 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexpa_v_f32m2(vfloat32m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m2(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexpa_v_f32m4(
+// CHECK-RV64-SAME: <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexpa.nxv8f32.i64(<vscale x 8 x float> poison, <vscale x 8 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexpa_v_f32m4(vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m4(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexpa_v_f32m8(
+// CHECK-RV64-SAME: <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexpa.nxv16f32.i64(<vscale x 16 x float> poison, <vscale x 16 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexpa_v_f32m8(vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m8(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexpa_v_f16mf4_m(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexpa.mask.nxv1f16.i64(<vscale x 1 x half> poison, <vscale x 1 x half> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexpa_v_f16mf4_m(vbool64_t vm, vfloat16mf4_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_v_f16mf4_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexpa_v_f16mf2_m(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexpa.mask.nxv2f16.i64(<vscale x 2 x half> poison, <vscale x 2 x half> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexpa_v_f16mf2_m(vbool32_t vm, vfloat16mf2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_v_f16mf2_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexpa_v_f16m1_m(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexpa.mask.nxv4f16.i64(<vscale x 4 x half> poison, <vscale x 4 x half> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexpa_v_f16m1_m(vbool16_t vm, vfloat16m1_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m1_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexpa_v_f16m2_m(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexpa.mask.nxv8f16.i64(<vscale x 8 x half> poison, <vscale x 8 x half> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexpa_v_f16m2_m(vbool8_t vm, vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m2_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexpa_v_f16m4_m(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexpa.mask.nxv16f16.i64(<vscale x 16 x half> poison, <vscale x 16 x half> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexpa_v_f16m4_m(vbool4_t vm, vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m4_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexpa_v_f16m8_m(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexpa.mask.nxv32f16.i64(<vscale x 32 x half> poison, <vscale x 32 x half> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexpa_v_f16m8_m(vbool2_t vm, vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m8_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexpa_v_f32mf2_m(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexpa.mask.nxv1f32.i64(<vscale x 1 x float> poison, <vscale x 1 x float> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexpa_v_f32mf2_m(vbool64_t vm, vfloat32mf2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_v_f32mf2_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexpa_v_f32m1_m(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexpa.mask.nxv2f32.i64(<vscale x 2 x float> poison, <vscale x 2 x float> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexpa_v_f32m1_m(vbool32_t vm, vfloat32m1_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m1_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexpa_v_f32m2_m(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexpa.mask.nxv4f32.i64(<vscale x 4 x float> poison, <vscale x 4 x float> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexpa_v_f32m2_m(vbool16_t vm, vfloat32m2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m2_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexpa_v_f32m4_m(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexpa.mask.nxv8f32.i64(<vscale x 8 x float> poison, <vscale x 8 x float> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexpa_v_f32m4_m(vbool8_t vm, vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m4_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexpa_v_f32m8_m(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexpa.mask.nxv16f32.i64(<vscale x 16 x float> poison, <vscale x 16 x float> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexpa_v_f32m8_m(vbool4_t vm, vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m8_m(vm, vs2, vl);
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexpa_v_64.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexpa_v_64.c
new file mode 100644
index 0000000..fd6f82d
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/non-overloaded/sf_vfexpa_v_64.c
@@ -0,0 +1,90 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 4
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +xsfvfexpa64e \
+// RUN: -disable-O0-optnone -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x double> @test_sf_vfexpa_v_f64m1(
+// CHECK-RV64-SAME: <vscale x 1 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.sf.vfexpa.nxv1f64.i64(<vscale x 1 x double> poison, <vscale x 1 x double> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
+//
+vfloat64m1_t test_sf_vfexpa_v_f64m1(vfloat64m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m1(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x double> @test_sf_vfexpa_v_f64m2(
+// CHECK-RV64-SAME: <vscale x 2 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x double> @llvm.riscv.sf.vfexpa.nxv2f64.i64(<vscale x 2 x double> poison, <vscale x 2 x double> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x double> [[TMP0]]
+//
+vfloat64m2_t test_sf_vfexpa_v_f64m2(vfloat64m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m2(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x double> @test_sf_vfexpa_v_f64m4(
+// CHECK-RV64-SAME: <vscale x 4 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x double> @llvm.riscv.sf.vfexpa.nxv4f64.i64(<vscale x 4 x double> poison, <vscale x 4 x double> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x double> [[TMP0]]
+//
+vfloat64m4_t test_sf_vfexpa_v_f64m4(vfloat64m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m4(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x double> @test_sf_vfexpa_v_f64m8(
+// CHECK-RV64-SAME: <vscale x 8 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x double> @llvm.riscv.sf.vfexpa.nxv8f64.i64(<vscale x 8 x double> poison, <vscale x 8 x double> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x double> [[TMP0]]
+//
+vfloat64m8_t test_sf_vfexpa_v_f64m8(vfloat64m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m8(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x double> @test_sf_vfexpa_v_f64m1_m(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.sf.vfexpa.mask.nxv1f64.i64(<vscale x 1 x double> poison, <vscale x 1 x double> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
+//
+vfloat64m1_t test_sf_vfexpa_v_f64m1_m(vbool64_t vm, vfloat64m1_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m1_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x double> @test_sf_vfexpa_v_f64m2_m(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x double> @llvm.riscv.sf.vfexpa.mask.nxv2f64.i64(<vscale x 2 x double> poison, <vscale x 2 x double> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 2 x double> [[TMP0]]
+//
+vfloat64m2_t test_sf_vfexpa_v_f64m2_m(vbool32_t vm, vfloat64m2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m2_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x double> @test_sf_vfexpa_v_f64m4_m(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x double> @llvm.riscv.sf.vfexpa.mask.nxv4f64.i64(<vscale x 4 x double> poison, <vscale x 4 x double> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 4 x double> [[TMP0]]
+//
+vfloat64m4_t test_sf_vfexpa_v_f64m4_m(vbool16_t vm, vfloat64m4_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m4_m(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x double> @test_sf_vfexpa_v_f64m8_m(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x double> @llvm.riscv.sf.vfexpa.mask.nxv8f64.i64(<vscale x 8 x double> poison, <vscale x 8 x double> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 8 x double> [[TMP0]]
+//
+vfloat64m8_t test_sf_vfexpa_v_f64m8_m(vbool8_t vm, vfloat64m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m8_m(vm, vs2, vl);
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexp_v_16.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexp_v_16.c
new file mode 100644
index 0000000..0e769ed
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexp_v_16.c
@@ -0,0 +1,131 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x -target-feature +zvfh \
+// RUN: -target-feature +xsfvfexp16e -disable-O0-optnone \
+// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexp_v_f16mf4(
+// CHECK-RV64-SAME: <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexp.nxv1f16.i64(<vscale x 1 x half> poison, <vscale x 1 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexp_v_f16mf4(vfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexp_v_f16mf2(
+// CHECK-RV64-SAME: <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexp.nxv2f16.i64(<vscale x 2 x half> poison, <vscale x 2 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexp_v_f16mf2(vfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexp_v_f16m1(
+// CHECK-RV64-SAME: <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexp.nxv4f16.i64(<vscale x 4 x half> poison, <vscale x 4 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexp_v_f16m1(vfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexp_v_f16m2(
+// CHECK-RV64-SAME: <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexp.nxv8f16.i64(<vscale x 8 x half> poison, <vscale x 8 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexp_v_f16m2(vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexp_v_f16m4(
+// CHECK-RV64-SAME: <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexp.nxv16f16.i64(<vscale x 16 x half> poison, <vscale x 16 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexp_v_f16m4(vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexp_v_f16m8(
+// CHECK-RV64-SAME: <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexp.nxv32f16.i64(<vscale x 32 x half> poison, <vscale x 32 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexp_v_f16m8(vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexp_v_f16mf4_m(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexp.mask.nxv1f16.i64(<vscale x 1 x half> poison, <vscale x 1 x half> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexp_v_f16mf4_m(vbool64_t vm, vfloat16mf4_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexp_v_f16mf2_m(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexp.mask.nxv2f16.i64(<vscale x 2 x half> poison, <vscale x 2 x half> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexp_v_f16mf2_m(vbool32_t vm, vfloat16mf2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexp_v_f16m1_m(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexp.mask.nxv4f16.i64(<vscale x 4 x half> poison, <vscale x 4 x half> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexp_v_f16m1_m(vbool16_t vm, vfloat16m1_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexp_v_f16m2_m(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexp.mask.nxv8f16.i64(<vscale x 8 x half> poison, <vscale x 8 x half> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexp_v_f16m2_m(vbool8_t vm, vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexp_v_f16m4_m(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexp.mask.nxv16f16.i64(<vscale x 16 x half> poison, <vscale x 16 x half> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexp_v_f16m4_m(vbool4_t vm, vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexp_v_f16m8_m(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexp.mask.nxv32f16.i64(<vscale x 32 x half> poison, <vscale x 32 x half> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexp_v_f16m8_m(vbool2_t vm, vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vm, vs2, vl);
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexp_v_32.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexp_v_32.c
new file mode 100644
index 0000000..3df1eaa
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexp_v_32.c
@@ -0,0 +1,111 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x -target-feature +zve32f \
+// RUN: -target-feature +xsfvfexp32e -disable-O0-optnone \
+// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexp_v_f32mf2(
+// CHECK-RV64-SAME: <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexp.nxv1f32.i64(<vscale x 1 x float> poison, <vscale x 1 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexp_v_f32mf2(vfloat32mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexp_v_f32m1(
+// CHECK-RV64-SAME: <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexp.nxv2f32.i64(<vscale x 2 x float> poison, <vscale x 2 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexp_v_f32m1(vfloat32m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexp_v_f32m2(
+// CHECK-RV64-SAME: <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexp.nxv4f32.i64(<vscale x 4 x float> poison, <vscale x 4 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexp_v_f32m2(vfloat32m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexp_v_f32m4(
+// CHECK-RV64-SAME: <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexp.nxv8f32.i64(<vscale x 8 x float> poison, <vscale x 8 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexp_v_f32m4(vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexp_v_f32m8(
+// CHECK-RV64-SAME: <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexp.nxv16f32.i64(<vscale x 16 x float> poison, <vscale x 16 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexp_v_f32m8(vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexp_v_f32mf2_m(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexp.mask.nxv1f32.i64(<vscale x 1 x float> poison, <vscale x 1 x float> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexp_v_f32mf2_m(vbool64_t vm, vfloat32mf2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexp_v_f32m1_m(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexp.mask.nxv2f32.i64(<vscale x 2 x float> poison, <vscale x 2 x float> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexp_v_f32m1_m(vbool32_t vm, vfloat32m1_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexp_v_f32m2_m(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexp.mask.nxv4f32.i64(<vscale x 4 x float> poison, <vscale x 4 x float> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexp_v_f32m2_m(vbool16_t vm, vfloat32m2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexp_v_f32m4_m(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexp.mask.nxv8f32.i64(<vscale x 8 x float> poison, <vscale x 8 x float> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexp_v_f32m4_m(vbool8_t vm, vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexp_v_f32m8_m(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexp.mask.nxv16f32.i64(<vscale x 16 x float> poison, <vscale x 16 x float> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexp_v_f32m8_m(vbool4_t vm, vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vm, vs2, vl);
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexp_v_bf.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexp_v_bf.c
new file mode 100644
index 0000000..6179dbe
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexp_v_bf.c
@@ -0,0 +1,134 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x -target-feature +zve32f \
+// RUN: -target-feature +zvfbfmin -target-feature +xsfvfbfexp16e -disable-O0-optnone \
+// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x bfloat> @test_sf_vfexp_v_bf16mf4(
+// CHECK-RV64-SAME: <vscale x 1 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x bfloat> @llvm.riscv.sf.vfexp.nxv1bf16.i64(<vscale x 1 x bfloat> poison, <vscale x 1 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x bfloat> [[TMP0]]
+//
+vbfloat16mf4_t test_sf_vfexp_v_bf16mf4(vbfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x bfloat> @test_sf_vfexp_v_bf16mf2(
+// CHECK-RV64-SAME: <vscale x 2 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x bfloat> @llvm.riscv.sf.vfexp.nxv2bf16.i64(<vscale x 2 x bfloat> poison, <vscale x 2 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x bfloat> [[TMP0]]
+//
+vbfloat16mf2_t test_sf_vfexp_v_bf16mf2(vbfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x bfloat> @test_sf_vfexp_v_bf16m1(
+// CHECK-RV64-SAME: <vscale x 4 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x bfloat> @llvm.riscv.sf.vfexp.nxv4bf16.i64(<vscale x 4 x bfloat> poison, <vscale x 4 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x bfloat> [[TMP0]]
+//
+vbfloat16m1_t test_sf_vfexp_v_bf16m1(vbfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x bfloat> @test_sf_vfexp_v_bf16m2(
+// CHECK-RV64-SAME: <vscale x 8 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x bfloat> @llvm.riscv.sf.vfexp.nxv8bf16.i64(<vscale x 8 x bfloat> poison, <vscale x 8 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x bfloat> [[TMP0]]
+//
+vbfloat16m2_t test_sf_vfexp_v_bf16m2(vbfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x bfloat> @test_sf_vfexp_v_bf16m4(
+// CHECK-RV64-SAME: <vscale x 16 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x bfloat> @llvm.riscv.sf.vfexp.nxv16bf16.i64(<vscale x 16 x bfloat> poison, <vscale x 16 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x bfloat> [[TMP0]]
+//
+vbfloat16m4_t test_sf_vfexp_v_bf16m4(vbfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x bfloat> @test_sf_vfexp_v_bf16m8(
+// CHECK-RV64-SAME: <vscale x 32 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x bfloat> @llvm.riscv.sf.vfexp.nxv32bf16.i64(<vscale x 32 x bfloat> poison, <vscale x 32 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
+//
+vbfloat16m8_t test_sf_vfexp_v_bf16m8(vbfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x bfloat> @test_sf_vfexp_v_bf16mf4_m(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv1bf16.i64(<vscale x 1 x bfloat> poison, <vscale x 1 x bfloat> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 1 x bfloat> [[TMP0]]
+//
+vbfloat16mf4_t test_sf_vfexp_v_bf16mf4_m(vbool64_t vm, vbfloat16mf4_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x bfloat> @test_sf_vfexp_v_bf16mf2_m(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv2bf16.i64(<vscale x 2 x bfloat> poison, <vscale x 2 x bfloat> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 2 x bfloat> [[TMP0]]
+//
+vbfloat16mf2_t test_sf_vfexp_v_bf16mf2_m(vbool32_t vm, vbfloat16mf2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x bfloat> @test_sf_vfexp_v_bf16m1_m(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv4bf16.i64(<vscale x 4 x bfloat> poison, <vscale x 4 x bfloat> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 4 x bfloat> [[TMP0]]
+//
+vbfloat16m1_t test_sf_vfexp_v_bf16m1_m(vbool16_t vm, vbfloat16m1_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x bfloat> @test_sf_vfexp_v_bf16m2_m(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv8bf16.i64(<vscale x 8 x bfloat> poison, <vscale x 8 x bfloat> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 8 x bfloat> [[TMP0]]
+//
+vbfloat16m2_t test_sf_vfexp_v_bf16m2_m(vbool8_t vm, vbfloat16m2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x bfloat> @test_sf_vfexp_v_bf16m4_m(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv16bf16.i64(<vscale x 16 x bfloat> poison, <vscale x 16 x bfloat> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 16 x bfloat> [[TMP0]]
+//
+vbfloat16m4_t test_sf_vfexp_v_bf16m4_m(vbool4_t vm, vbfloat16m4_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x bfloat> @test_sf_vfexp_v_bf16m8_m(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv32bf16.i64(<vscale x 32 x bfloat> poison, <vscale x 32 x bfloat> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
+//
+vbfloat16m8_t test_sf_vfexp_v_bf16m8_m(vbool2_t vm, vbfloat16m8_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp(vm, vs2, vl);
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexpa_v.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexpa_v.c
new file mode 100644
index 0000000..1ddbb0b
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexpa_v.c
@@ -0,0 +1,234 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 4
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64f -target-feature +zvfh \
+// RUN: -target-feature +xsfvfexpa -disable-O0-optnone \
+// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexpa_v_f16mf4(
+// CHECK-RV64-SAME: <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexpa.nxv1f16.i64(<vscale x 1 x half> poison, <vscale x 1 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexpa_v_f16mf4(vfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexpa_v_f16mf2(
+// CHECK-RV64-SAME: <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexpa.nxv2f16.i64(<vscale x 2 x half> poison, <vscale x 2 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexpa_v_f16mf2(vfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexpa_v_f16m1(
+// CHECK-RV64-SAME: <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexpa.nxv4f16.i64(<vscale x 4 x half> poison, <vscale x 4 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexpa_v_f16m1(vfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexpa_v_f16m2(
+// CHECK-RV64-SAME: <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexpa.nxv8f16.i64(<vscale x 8 x half> poison, <vscale x 8 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexpa_v_f16m2(vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexpa_v_f16m4(
+// CHECK-RV64-SAME: <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexpa.nxv16f16.i64(<vscale x 16 x half> poison, <vscale x 16 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexpa_v_f16m4(vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexpa_v_f16m8(
+// CHECK-RV64-SAME: <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexpa.nxv32f16.i64(<vscale x 32 x half> poison, <vscale x 32 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexpa_v_f16m8(vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexpa_v_f32mf2(
+// CHECK-RV64-SAME: <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexpa.nxv1f32.i64(<vscale x 1 x float> poison, <vscale x 1 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexpa_v_f32mf2(vfloat32mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexpa_v_f32m1(
+// CHECK-RV64-SAME: <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexpa.nxv2f32.i64(<vscale x 2 x float> poison, <vscale x 2 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexpa_v_f32m1(vfloat32m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexpa_v_f32m2(
+// CHECK-RV64-SAME: <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexpa.nxv4f32.i64(<vscale x 4 x float> poison, <vscale x 4 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexpa_v_f32m2(vfloat32m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexpa_v_f32m4(
+// CHECK-RV64-SAME: <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexpa.nxv8f32.i64(<vscale x 8 x float> poison, <vscale x 8 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexpa_v_f32m4(vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexpa_v_f32m8(
+// CHECK-RV64-SAME: <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexpa.nxv16f32.i64(<vscale x 16 x float> poison, <vscale x 16 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexpa_v_f32m8(vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexpa_v_f16mf4_m(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexpa.mask.nxv1f16.i64(<vscale x 1 x half> poison, <vscale x 1 x half> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexpa_v_f16mf4_m(vbool64_t vm, vfloat16mf4_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexpa_v_f16mf2_m(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexpa.mask.nxv2f16.i64(<vscale x 2 x half> poison, <vscale x 2 x half> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexpa_v_f16mf2_m(vbool32_t vm, vfloat16mf2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexpa_v_f16m1_m(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexpa.mask.nxv4f16.i64(<vscale x 4 x half> poison, <vscale x 4 x half> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexpa_v_f16m1_m(vbool16_t vm, vfloat16m1_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexpa_v_f16m2_m(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexpa.mask.nxv8f16.i64(<vscale x 8 x half> poison, <vscale x 8 x half> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexpa_v_f16m2_m(vbool8_t vm, vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexpa_v_f16m4_m(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexpa.mask.nxv16f16.i64(<vscale x 16 x half> poison, <vscale x 16 x half> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexpa_v_f16m4_m(vbool4_t vm, vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexpa_v_f16m8_m(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexpa.mask.nxv32f16.i64(<vscale x 32 x half> poison, <vscale x 32 x half> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexpa_v_f16m8_m(vbool2_t vm, vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexpa_v_f32mf2_m(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexpa.mask.nxv1f32.i64(<vscale x 1 x float> poison, <vscale x 1 x float> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexpa_v_f32mf2_m(vbool64_t vm, vfloat32mf2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexpa_v_f32m1_m(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexpa.mask.nxv2f32.i64(<vscale x 2 x float> poison, <vscale x 2 x float> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexpa_v_f32m1_m(vbool32_t vm, vfloat32m1_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexpa_v_f32m2_m(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexpa.mask.nxv4f32.i64(<vscale x 4 x float> poison, <vscale x 4 x float> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexpa_v_f32m2_m(vbool16_t vm, vfloat32m2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexpa_v_f32m4_m(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexpa.mask.nxv8f32.i64(<vscale x 8 x float> poison, <vscale x 8 x float> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexpa_v_f32m4_m(vbool8_t vm, vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexpa_v_f32m8_m(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexpa.mask.nxv16f32.i64(<vscale x 16 x float> poison, <vscale x 16 x float> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexpa_v_f32m8_m(vbool4_t vm, vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vm, vs2, vl);
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexpa_v_64.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexpa_v_64.c
new file mode 100644
index 0000000..165879a
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/non-policy/overloaded/sf_vfexpa_v_64.c
@@ -0,0 +1,90 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 4
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +xsfvfexpa64e \
+// RUN: -disable-O0-optnone -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x double> @test_sf_vfexpa_v_f64m1(
+// CHECK-RV64-SAME: <vscale x 1 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.sf.vfexpa.nxv1f64.i64(<vscale x 1 x double> poison, <vscale x 1 x double> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
+//
+vfloat64m1_t test_sf_vfexpa_v_f64m1(vfloat64m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x double> @test_sf_vfexpa_v_f64m2(
+// CHECK-RV64-SAME: <vscale x 2 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x double> @llvm.riscv.sf.vfexpa.nxv2f64.i64(<vscale x 2 x double> poison, <vscale x 2 x double> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x double> [[TMP0]]
+//
+vfloat64m2_t test_sf_vfexpa_v_f64m2(vfloat64m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x double> @test_sf_vfexpa_v_f64m4(
+// CHECK-RV64-SAME: <vscale x 4 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x double> @llvm.riscv.sf.vfexpa.nxv4f64.i64(<vscale x 4 x double> poison, <vscale x 4 x double> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x double> [[TMP0]]
+//
+vfloat64m4_t test_sf_vfexpa_v_f64m4(vfloat64m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x double> @test_sf_vfexpa_v_f64m8(
+// CHECK-RV64-SAME: <vscale x 8 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x double> @llvm.riscv.sf.vfexpa.nxv8f64.i64(<vscale x 8 x double> poison, <vscale x 8 x double> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x double> [[TMP0]]
+//
+vfloat64m8_t test_sf_vfexpa_v_f64m8(vfloat64m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x double> @test_sf_vfexpa_v_f64m1_m(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.sf.vfexpa.mask.nxv1f64.i64(<vscale x 1 x double> poison, <vscale x 1 x double> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
+//
+vfloat64m1_t test_sf_vfexpa_v_f64m1_m(vbool64_t vm, vfloat64m1_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x double> @test_sf_vfexpa_v_f64m2_m(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x double> @llvm.riscv.sf.vfexpa.mask.nxv2f64.i64(<vscale x 2 x double> poison, <vscale x 2 x double> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 2 x double> [[TMP0]]
+//
+vfloat64m2_t test_sf_vfexpa_v_f64m2_m(vbool32_t vm, vfloat64m2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x double> @test_sf_vfexpa_v_f64m4_m(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x double> @llvm.riscv.sf.vfexpa.mask.nxv4f64.i64(<vscale x 4 x double> poison, <vscale x 4 x double> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 4 x double> [[TMP0]]
+//
+vfloat64m4_t test_sf_vfexpa_v_f64m4_m(vbool16_t vm, vfloat64m4_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa(vm, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x double> @test_sf_vfexpa_v_f64m8_m(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x double> @llvm.riscv.sf.vfexpa.mask.nxv8f64.i64(<vscale x 8 x double> poison, <vscale x 8 x double> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 3)
+// CHECK-RV64-NEXT: ret <vscale x 8 x double> [[TMP0]]
+//
+vfloat64m8_t test_sf_vfexpa_v_f64m8_m(vbool8_t vm, vfloat64m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa(vm, vs2, vl);
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexp_v_16.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexp_v_16.c
new file mode 100644
index 0000000..aed6d87
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexp_v_16.c
@@ -0,0 +1,248 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x -target-feature +zvfh \
+// RUN: -target-feature +xsfvfexp16e -disable-O0-optnone \
+// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexp_v_f16mf4_tu(
+// CHECK-RV64-SAME: <vscale x 1 x half> [[VD:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexp.nxv1f16.i64(<vscale x 1 x half> [[VD]], <vscale x 1 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexp_v_f16mf4_tu(vfloat16mf4_t vd, vfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16mf4_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexp_v_f16mf2_tu(
+// CHECK-RV64-SAME: <vscale x 2 x half> [[VD:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexp.nxv2f16.i64(<vscale x 2 x half> [[VD]], <vscale x 2 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexp_v_f16mf2_tu(vfloat16mf2_t vd, vfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16mf2_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexp_v_f16m1_tu(
+// CHECK-RV64-SAME: <vscale x 4 x half> [[VD:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexp.nxv4f16.i64(<vscale x 4 x half> [[VD]], <vscale x 4 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexp_v_f16m1_tu(vfloat16m1_t vd, vfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m1_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexp_v_f16m2_tu(
+// CHECK-RV64-SAME: <vscale x 8 x half> [[VD:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexp.nxv8f16.i64(<vscale x 8 x half> [[VD]], <vscale x 8 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexp_v_f16m2_tu(vfloat16m2_t vd, vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m2_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexp_v_f16m4_tu(
+// CHECK-RV64-SAME: <vscale x 16 x half> [[VD:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexp.nxv16f16.i64(<vscale x 16 x half> [[VD]], <vscale x 16 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexp_v_f16m4_tu(vfloat16m4_t vd, vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m4_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexp_v_f16m8_tu(
+// CHECK-RV64-SAME: <vscale x 32 x half> [[VD:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexp.nxv32f16.i64(<vscale x 32 x half> [[VD]], <vscale x 32 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexp_v_f16m8_tu(vfloat16m8_t vd, vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m8_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexp_v_f16mf4_tum(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x half> [[VD:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexp.mask.nxv1f16.i64(<vscale x 1 x half> [[VD]], <vscale x 1 x half> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexp_v_f16mf4_tum(vbool64_t vm, vfloat16mf4_t vd, vfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16mf4_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexp_v_f16mf2_tum(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x half> [[VD:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexp.mask.nxv2f16.i64(<vscale x 2 x half> [[VD]], <vscale x 2 x half> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexp_v_f16mf2_tum(vbool32_t vm, vfloat16mf2_t vd, vfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16mf2_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexp_v_f16m1_tum(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x half> [[VD:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexp.mask.nxv4f16.i64(<vscale x 4 x half> [[VD]], <vscale x 4 x half> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexp_v_f16m1_tum(vbool16_t vm, vfloat16m1_t vd, vfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m1_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexp_v_f16m2_tum(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x half> [[VD:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexp.mask.nxv8f16.i64(<vscale x 8 x half> [[VD]], <vscale x 8 x half> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexp_v_f16m2_tum(vbool8_t vm, vfloat16m2_t vd, vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m2_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexp_v_f16m4_tum(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x half> [[VD:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexp.mask.nxv16f16.i64(<vscale x 16 x half> [[VD]], <vscale x 16 x half> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexp_v_f16m4_tum(vbool4_t vm, vfloat16m4_t vd, vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m4_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexp_v_f16m8_tum(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x half> [[VD:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexp.mask.nxv32f16.i64(<vscale x 32 x half> [[VD]], <vscale x 32 x half> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexp_v_f16m8_tum(vbool2_t vm, vfloat16m8_t vd, vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m8_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexp_v_f16mf4_tumu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x half> [[VD:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexp.mask.nxv1f16.i64(<vscale x 1 x half> [[VD]], <vscale x 1 x half> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexp_v_f16mf4_tumu(vbool64_t vm, vfloat16mf4_t vd, vfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16mf4_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexp_v_f16mf2_tumu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x half> [[VD:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexp.mask.nxv2f16.i64(<vscale x 2 x half> [[VD]], <vscale x 2 x half> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexp_v_f16mf2_tumu(vbool32_t vm, vfloat16mf2_t vd, vfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16mf2_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexp_v_f16m1_tumu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x half> [[VD:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexp.mask.nxv4f16.i64(<vscale x 4 x half> [[VD]], <vscale x 4 x half> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexp_v_f16m1_tumu(vbool16_t vm, vfloat16m1_t vd, vfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m1_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexp_v_f16m2_tumu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x half> [[VD:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexp.mask.nxv8f16.i64(<vscale x 8 x half> [[VD]], <vscale x 8 x half> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexp_v_f16m2_tumu(vbool8_t vm, vfloat16m2_t vd, vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m2_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexp_v_f16m4_tumu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x half> [[VD:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexp.mask.nxv16f16.i64(<vscale x 16 x half> [[VD]], <vscale x 16 x half> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexp_v_f16m4_tumu(vbool4_t vm, vfloat16m4_t vd, vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m4_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexp_v_f16m8_tumu(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x half> [[VD:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexp.mask.nxv32f16.i64(<vscale x 32 x half> [[VD]], <vscale x 32 x half> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexp_v_f16m8_tumu(vbool2_t vm, vfloat16m8_t vd, vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m8_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexp_v_f16mf4_mu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x half> [[VD:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexp.mask.nxv1f16.i64(<vscale x 1 x half> [[VD]], <vscale x 1 x half> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexp_v_f16mf4_mu(vbool64_t vm, vfloat16mf4_t vd, vfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16mf4_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexp_v_f16mf2_mu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x half> [[VD:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexp.mask.nxv2f16.i64(<vscale x 2 x half> [[VD]], <vscale x 2 x half> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexp_v_f16mf2_mu(vbool32_t vm, vfloat16mf2_t vd, vfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16mf2_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexp_v_f16m1_mu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x half> [[VD:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexp.mask.nxv4f16.i64(<vscale x 4 x half> [[VD]], <vscale x 4 x half> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexp_v_f16m1_mu(vbool16_t vm, vfloat16m1_t vd, vfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m1_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexp_v_f16m2_mu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x half> [[VD:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexp.mask.nxv8f16.i64(<vscale x 8 x half> [[VD]], <vscale x 8 x half> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexp_v_f16m2_mu(vbool8_t vm, vfloat16m2_t vd, vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m2_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexp_v_f16m4_mu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x half> [[VD:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexp.mask.nxv16f16.i64(<vscale x 16 x half> [[VD]], <vscale x 16 x half> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexp_v_f16m4_mu(vbool4_t vm, vfloat16m4_t vd, vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m4_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexp_v_f16m8_mu(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x half> [[VD:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexp.mask.nxv32f16.i64(<vscale x 32 x half> [[VD]], <vscale x 32 x half> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexp_v_f16m8_mu(vbool2_t vm, vfloat16m8_t vd, vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f16m8_mu(vm, vd, vs2, vl);
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexp_v_32.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexp_v_32.c
new file mode 100644
index 0000000..374f324
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexp_v_32.c
@@ -0,0 +1,208 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x -target-feature +zve32f \
+// RUN: -target-feature +xsfvfexp32e -disable-O0-optnone \
+// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexp_v_f32mf2_tu(
+// CHECK-RV64-SAME: <vscale x 1 x float> [[VD:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexp.nxv1f32.i64(<vscale x 1 x float> [[VD]], <vscale x 1 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexp_v_f32mf2_tu(vfloat32mf2_t vd, vfloat32mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32mf2_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexp_v_f32m1_tu(
+// CHECK-RV64-SAME: <vscale x 2 x float> [[VD:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexp.nxv2f32.i64(<vscale x 2 x float> [[VD]], <vscale x 2 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexp_v_f32m1_tu(vfloat32m1_t vd, vfloat32m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m1_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexp_v_f32m2_tu(
+// CHECK-RV64-SAME: <vscale x 4 x float> [[VD:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexp.nxv4f32.i64(<vscale x 4 x float> [[VD]], <vscale x 4 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexp_v_f32m2_tu(vfloat32m2_t vd, vfloat32m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m2_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexp_v_f32m4_tu(
+// CHECK-RV64-SAME: <vscale x 8 x float> [[VD:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexp.nxv8f32.i64(<vscale x 8 x float> [[VD]], <vscale x 8 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexp_v_f32m4_tu(vfloat32m4_t vd, vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m4_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexp_v_f32m8_tu(
+// CHECK-RV64-SAME: <vscale x 16 x float> [[VD:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexp.nxv16f32.i64(<vscale x 16 x float> [[VD]], <vscale x 16 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexp_v_f32m8_tu(vfloat32m8_t vd, vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m8_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexp_v_f32mf2_tum(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x float> [[VD:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexp.mask.nxv1f32.i64(<vscale x 1 x float> [[VD]], <vscale x 1 x float> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexp_v_f32mf2_tum(vbool64_t vm, vfloat32mf2_t vd, vfloat32mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32mf2_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexp_v_f32m1_tum(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x float> [[VD:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexp.mask.nxv2f32.i64(<vscale x 2 x float> [[VD]], <vscale x 2 x float> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexp_v_f32m1_tum(vbool32_t vm, vfloat32m1_t vd, vfloat32m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m1_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexp_v_f32m2_tum(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x float> [[VD:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexp.mask.nxv4f32.i64(<vscale x 4 x float> [[VD]], <vscale x 4 x float> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexp_v_f32m2_tum(vbool16_t vm, vfloat32m2_t vd, vfloat32m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m2_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexp_v_f32m4_tum(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x float> [[VD:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexp.mask.nxv8f32.i64(<vscale x 8 x float> [[VD]], <vscale x 8 x float> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexp_v_f32m4_tum(vbool8_t vm, vfloat32m4_t vd, vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m4_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexp_v_f32m8_tum(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x float> [[VD:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexp.mask.nxv16f32.i64(<vscale x 16 x float> [[VD]], <vscale x 16 x float> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexp_v_f32m8_tum(vbool4_t vm, vfloat32m8_t vd, vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m8_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexp_v_f32mf2_tumu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x float> [[VD:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexp.mask.nxv1f32.i64(<vscale x 1 x float> [[VD]], <vscale x 1 x float> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexp_v_f32mf2_tumu(vbool64_t vm, vfloat32mf2_t vd, vfloat32mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32mf2_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexp_v_f32m1_tumu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x float> [[VD:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexp.mask.nxv2f32.i64(<vscale x 2 x float> [[VD]], <vscale x 2 x float> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexp_v_f32m1_tumu(vbool32_t vm, vfloat32m1_t vd, vfloat32m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m1_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexp_v_f32m2_tumu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x float> [[VD:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexp.mask.nxv4f32.i64(<vscale x 4 x float> [[VD]], <vscale x 4 x float> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexp_v_f32m2_tumu(vbool16_t vm, vfloat32m2_t vd, vfloat32m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m2_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexp_v_f32m4_tumu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x float> [[VD:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexp.mask.nxv8f32.i64(<vscale x 8 x float> [[VD]], <vscale x 8 x float> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexp_v_f32m4_tumu(vbool8_t vm, vfloat32m4_t vd, vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m4_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexp_v_f32m8_tumu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x float> [[VD:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexp.mask.nxv16f32.i64(<vscale x 16 x float> [[VD]], <vscale x 16 x float> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexp_v_f32m8_tumu(vbool4_t vm, vfloat32m8_t vd, vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m8_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexp_v_f32mf2_mu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x float> [[VD:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexp.mask.nxv1f32.i64(<vscale x 1 x float> [[VD]], <vscale x 1 x float> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexp_v_f32mf2_mu(vbool64_t vm, vfloat32mf2_t vd, vfloat32mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32mf2_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexp_v_f32m1_mu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x float> [[VD:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexp.mask.nxv2f32.i64(<vscale x 2 x float> [[VD]], <vscale x 2 x float> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexp_v_f32m1_mu(vbool32_t vm, vfloat32m1_t vd, vfloat32m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m1_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexp_v_f32m2_mu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x float> [[VD:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexp.mask.nxv4f32.i64(<vscale x 4 x float> [[VD]], <vscale x 4 x float> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexp_v_f32m2_mu(vbool16_t vm, vfloat32m2_t vd, vfloat32m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m2_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexp_v_f32m4_mu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x float> [[VD:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexp.mask.nxv8f32.i64(<vscale x 8 x float> [[VD]], <vscale x 8 x float> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexp_v_f32m4_mu(vbool8_t vm, vfloat32m4_t vd, vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m4_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexp_v_f32m8_mu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x float> [[VD:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexp.mask.nxv16f32.i64(<vscale x 16 x float> [[VD]], <vscale x 16 x float> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexp_v_f32m8_mu(vbool4_t vm, vfloat32m8_t vd, vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_f32m8_mu(vm, vd, vs2, vl);
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexp_v_bf.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexp_v_bf.c
new file mode 100644
index 0000000..aec0b9f
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexp_v_bf.c
@@ -0,0 +1,248 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x -target-feature +zve32f \
+// RUN: -target-feature +zvfbfmin -target-feature +xsfvfbfexp16e -disable-O0-optnone \
+// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x bfloat> @test_sf_vfexp_v_bf16mf4_tu(
+// CHECK-RV64-SAME: <vscale x 1 x bfloat> [[VD:%.*]], <vscale x 1 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x bfloat> @llvm.riscv.sf.vfexp.nxv1bf16.i64(<vscale x 1 x bfloat> [[VD]], <vscale x 1 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x bfloat> [[TMP0]]
+//
+vbfloat16mf4_t test_sf_vfexp_v_bf16mf4_tu(vbfloat16mf4_t vd, vbfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16mf4_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x bfloat> @test_sf_vfexp_v_bf16mf2_tu(
+// CHECK-RV64-SAME: <vscale x 2 x bfloat> [[VD:%.*]], <vscale x 2 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x bfloat> @llvm.riscv.sf.vfexp.nxv2bf16.i64(<vscale x 2 x bfloat> [[VD]], <vscale x 2 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x bfloat> [[TMP0]]
+//
+vbfloat16mf2_t test_sf_vfexp_v_bf16mf2_tu(vbfloat16mf2_t vd, vbfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16mf2_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x bfloat> @test_sf_vfexp_v_bf16m1_tu(
+// CHECK-RV64-SAME: <vscale x 4 x bfloat> [[VD:%.*]], <vscale x 4 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x bfloat> @llvm.riscv.sf.vfexp.nxv4bf16.i64(<vscale x 4 x bfloat> [[VD]], <vscale x 4 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x bfloat> [[TMP0]]
+//
+vbfloat16m1_t test_sf_vfexp_v_bf16m1_tu(vbfloat16m1_t vd, vbfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m1_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x bfloat> @test_sf_vfexp_v_bf16m2_tu(
+// CHECK-RV64-SAME: <vscale x 8 x bfloat> [[VD:%.*]], <vscale x 8 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x bfloat> @llvm.riscv.sf.vfexp.nxv8bf16.i64(<vscale x 8 x bfloat> [[VD]], <vscale x 8 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x bfloat> [[TMP0]]
+//
+vbfloat16m2_t test_sf_vfexp_v_bf16m2_tu(vbfloat16m2_t vd, vbfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m2_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x bfloat> @test_sf_vfexp_v_bf16m4_tu(
+// CHECK-RV64-SAME: <vscale x 16 x bfloat> [[VD:%.*]], <vscale x 16 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x bfloat> @llvm.riscv.sf.vfexp.nxv16bf16.i64(<vscale x 16 x bfloat> [[VD]], <vscale x 16 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x bfloat> [[TMP0]]
+//
+vbfloat16m4_t test_sf_vfexp_v_bf16m4_tu(vbfloat16m4_t vd, vbfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m4_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x bfloat> @test_sf_vfexp_v_bf16m8_tu(
+// CHECK-RV64-SAME: <vscale x 32 x bfloat> [[VD:%.*]], <vscale x 32 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x bfloat> @llvm.riscv.sf.vfexp.nxv32bf16.i64(<vscale x 32 x bfloat> [[VD]], <vscale x 32 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
+//
+vbfloat16m8_t test_sf_vfexp_v_bf16m8_tu(vbfloat16m8_t vd, vbfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m8_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x bfloat> @test_sf_vfexp_v_bf16mf4_tum(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x bfloat> [[VD:%.*]], <vscale x 1 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv1bf16.i64(<vscale x 1 x bfloat> [[VD]], <vscale x 1 x bfloat> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 1 x bfloat> [[TMP0]]
+//
+vbfloat16mf4_t test_sf_vfexp_v_bf16mf4_tum(vbool64_t vm, vbfloat16mf4_t vd, vbfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16mf4_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x bfloat> @test_sf_vfexp_v_bf16mf2_tum(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x bfloat> [[VD:%.*]], <vscale x 2 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv2bf16.i64(<vscale x 2 x bfloat> [[VD]], <vscale x 2 x bfloat> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 2 x bfloat> [[TMP0]]
+//
+vbfloat16mf2_t test_sf_vfexp_v_bf16mf2_tum(vbool32_t vm, vbfloat16mf2_t vd, vbfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16mf2_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x bfloat> @test_sf_vfexp_v_bf16m1_tum(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x bfloat> [[VD:%.*]], <vscale x 4 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv4bf16.i64(<vscale x 4 x bfloat> [[VD]], <vscale x 4 x bfloat> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 4 x bfloat> [[TMP0]]
+//
+vbfloat16m1_t test_sf_vfexp_v_bf16m1_tum(vbool16_t vm, vbfloat16m1_t vd, vbfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m1_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x bfloat> @test_sf_vfexp_v_bf16m2_tum(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x bfloat> [[VD:%.*]], <vscale x 8 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv8bf16.i64(<vscale x 8 x bfloat> [[VD]], <vscale x 8 x bfloat> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 8 x bfloat> [[TMP0]]
+//
+vbfloat16m2_t test_sf_vfexp_v_bf16m2_tum(vbool8_t vm, vbfloat16m2_t vd, vbfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m2_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x bfloat> @test_sf_vfexp_v_bf16m4_tum(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x bfloat> [[VD:%.*]], <vscale x 16 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv16bf16.i64(<vscale x 16 x bfloat> [[VD]], <vscale x 16 x bfloat> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 16 x bfloat> [[TMP0]]
+//
+vbfloat16m4_t test_sf_vfexp_v_bf16m4_tum(vbool4_t vm, vbfloat16m4_t vd, vbfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m4_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x bfloat> @test_sf_vfexp_v_bf16m8_tum(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x bfloat> [[VD:%.*]], <vscale x 32 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv32bf16.i64(<vscale x 32 x bfloat> [[VD]], <vscale x 32 x bfloat> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
+//
+vbfloat16m8_t test_sf_vfexp_v_bf16m8_tum(vbool2_t vm, vbfloat16m8_t vd, vbfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m8_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x bfloat> @test_sf_vfexp_v_bf16mf4_tumu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x bfloat> [[VD:%.*]], <vscale x 1 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv1bf16.i64(<vscale x 1 x bfloat> [[VD]], <vscale x 1 x bfloat> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 1 x bfloat> [[TMP0]]
+//
+vbfloat16mf4_t test_sf_vfexp_v_bf16mf4_tumu(vbool64_t vm, vbfloat16mf4_t vd, vbfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16mf4_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x bfloat> @test_sf_vfexp_v_bf16mf2_tumu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x bfloat> [[VD:%.*]], <vscale x 2 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv2bf16.i64(<vscale x 2 x bfloat> [[VD]], <vscale x 2 x bfloat> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 2 x bfloat> [[TMP0]]
+//
+vbfloat16mf2_t test_sf_vfexp_v_bf16mf2_tumu(vbool32_t vm, vbfloat16mf2_t vd, vbfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16mf2_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x bfloat> @test_sf_vfexp_v_bf16m1_tumu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x bfloat> [[VD:%.*]], <vscale x 4 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv4bf16.i64(<vscale x 4 x bfloat> [[VD]], <vscale x 4 x bfloat> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 4 x bfloat> [[TMP0]]
+//
+vbfloat16m1_t test_sf_vfexp_v_bf16m1_tumu(vbool16_t vm, vbfloat16m1_t vd, vbfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m1_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x bfloat> @test_sf_vfexp_v_bf16m2_tumu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x bfloat> [[VD:%.*]], <vscale x 8 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv8bf16.i64(<vscale x 8 x bfloat> [[VD]], <vscale x 8 x bfloat> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 8 x bfloat> [[TMP0]]
+//
+vbfloat16m2_t test_sf_vfexp_v_bf16m2_tumu(vbool8_t vm, vbfloat16m2_t vd, vbfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m2_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x bfloat> @test_sf_vfexp_v_bf16m4_tumu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x bfloat> [[VD:%.*]], <vscale x 16 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv16bf16.i64(<vscale x 16 x bfloat> [[VD]], <vscale x 16 x bfloat> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 16 x bfloat> [[TMP0]]
+//
+vbfloat16m4_t test_sf_vfexp_v_bf16m4_tumu(vbool4_t vm, vbfloat16m4_t vd, vbfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m4_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x bfloat> @test_sf_vfexp_v_bf16m8_tumu(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x bfloat> [[VD:%.*]], <vscale x 32 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv32bf16.i64(<vscale x 32 x bfloat> [[VD]], <vscale x 32 x bfloat> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
+//
+vbfloat16m8_t test_sf_vfexp_v_bf16m8_tumu(vbool2_t vm, vbfloat16m8_t vd, vbfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m8_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x bfloat> @test_sf_vfexp_v_bf16mf4_mu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x bfloat> [[VD:%.*]], <vscale x 1 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv1bf16.i64(<vscale x 1 x bfloat> [[VD]], <vscale x 1 x bfloat> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 1 x bfloat> [[TMP0]]
+//
+vbfloat16mf4_t test_sf_vfexp_v_bf16mf4_mu(vbool64_t vm, vbfloat16mf4_t vd, vbfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16mf4_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x bfloat> @test_sf_vfexp_v_bf16mf2_mu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x bfloat> [[VD:%.*]], <vscale x 2 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv2bf16.i64(<vscale x 2 x bfloat> [[VD]], <vscale x 2 x bfloat> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 2 x bfloat> [[TMP0]]
+//
+vbfloat16mf2_t test_sf_vfexp_v_bf16mf2_mu(vbool32_t vm, vbfloat16mf2_t vd, vbfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16mf2_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x bfloat> @test_sf_vfexp_v_bf16m1_mu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x bfloat> [[VD:%.*]], <vscale x 4 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv4bf16.i64(<vscale x 4 x bfloat> [[VD]], <vscale x 4 x bfloat> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 4 x bfloat> [[TMP0]]
+//
+vbfloat16m1_t test_sf_vfexp_v_bf16m1_mu(vbool16_t vm, vbfloat16m1_t vd, vbfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m1_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x bfloat> @test_sf_vfexp_v_bf16m2_mu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x bfloat> [[VD:%.*]], <vscale x 8 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv8bf16.i64(<vscale x 8 x bfloat> [[VD]], <vscale x 8 x bfloat> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 8 x bfloat> [[TMP0]]
+//
+vbfloat16m2_t test_sf_vfexp_v_bf16m2_mu(vbool8_t vm, vbfloat16m2_t vd, vbfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m2_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x bfloat> @test_sf_vfexp_v_bf16m4_mu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x bfloat> [[VD:%.*]], <vscale x 16 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv16bf16.i64(<vscale x 16 x bfloat> [[VD]], <vscale x 16 x bfloat> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 16 x bfloat> [[TMP0]]
+//
+vbfloat16m4_t test_sf_vfexp_v_bf16m4_mu(vbool4_t vm, vbfloat16m4_t vd, vbfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m4_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x bfloat> @test_sf_vfexp_v_bf16m8_mu(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x bfloat> [[VD:%.*]], <vscale x 32 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv32bf16.i64(<vscale x 32 x bfloat> [[VD]], <vscale x 32 x bfloat> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
+//
+vbfloat16m8_t test_sf_vfexp_v_bf16m8_mu(vbool2_t vm, vbfloat16m8_t vd, vbfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_v_bf16m8_mu(vm, vd, vs2, vl);
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexpa_v.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexpa_v.c
new file mode 100644
index 0000000..b687026
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexpa_v.c
@@ -0,0 +1,448 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 4
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64f -target-feature +zvfh \
+// RUN: -target-feature +xsfvfexpa -disable-O0-optnone \
+// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexpa_v_f16mf4_tu(
+// CHECK-RV64-SAME: <vscale x 1 x half> [[VD:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexpa.nxv1f16.i64(<vscale x 1 x half> [[VD]], <vscale x 1 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexpa_v_f16mf4_tu(vfloat16mf4_t vd, vfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16mf4_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexpa_v_f16mf2_tu(
+// CHECK-RV64-SAME: <vscale x 2 x half> [[VD:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexpa.nxv2f16.i64(<vscale x 2 x half> [[VD]], <vscale x 2 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexpa_v_f16mf2_tu(vfloat16mf2_t vd, vfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16mf2_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexpa_v_f16m1_tu(
+// CHECK-RV64-SAME: <vscale x 4 x half> [[VD:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexpa.nxv4f16.i64(<vscale x 4 x half> [[VD]], <vscale x 4 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexpa_v_f16m1_tu(vfloat16m1_t vd, vfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m1_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexpa_v_f16m2_tu(
+// CHECK-RV64-SAME: <vscale x 8 x half> [[VD:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexpa.nxv8f16.i64(<vscale x 8 x half> [[VD]], <vscale x 8 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexpa_v_f16m2_tu(vfloat16m2_t vd, vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m2_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexpa_v_f16m4_tu(
+// CHECK-RV64-SAME: <vscale x 16 x half> [[VD:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexpa.nxv16f16.i64(<vscale x 16 x half> [[VD]], <vscale x 16 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexpa_v_f16m4_tu(vfloat16m4_t vd, vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m4_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexpa_v_f16m8_tu(
+// CHECK-RV64-SAME: <vscale x 32 x half> [[VD:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexpa.nxv32f16.i64(<vscale x 32 x half> [[VD]], <vscale x 32 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexpa_v_f16m8_tu(vfloat16m8_t vd, vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m8_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexpa_v_f32mf2_tu(
+// CHECK-RV64-SAME: <vscale x 1 x float> [[VD:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexpa.nxv1f32.i64(<vscale x 1 x float> [[VD]], <vscale x 1 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexpa_v_f32mf2_tu(vfloat32mf2_t vd, vfloat32mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32mf2_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexpa_v_f32m1_tu(
+// CHECK-RV64-SAME: <vscale x 2 x float> [[VD:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexpa.nxv2f32.i64(<vscale x 2 x float> [[VD]], <vscale x 2 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexpa_v_f32m1_tu(vfloat32m1_t vd, vfloat32m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m1_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexpa_v_f32m2_tu(
+// CHECK-RV64-SAME: <vscale x 4 x float> [[VD:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexpa.nxv4f32.i64(<vscale x 4 x float> [[VD]], <vscale x 4 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexpa_v_f32m2_tu(vfloat32m2_t vd, vfloat32m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m2_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexpa_v_f32m4_tu(
+// CHECK-RV64-SAME: <vscale x 8 x float> [[VD:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexpa.nxv8f32.i64(<vscale x 8 x float> [[VD]], <vscale x 8 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexpa_v_f32m4_tu(vfloat32m4_t vd, vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m4_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexpa_v_f32m8_tu(
+// CHECK-RV64-SAME: <vscale x 16 x float> [[VD:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexpa.nxv16f32.i64(<vscale x 16 x float> [[VD]], <vscale x 16 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexpa_v_f32m8_tu(vfloat32m8_t vd, vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m8_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexpa_v_f16mf4_tum(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x half> [[VD:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexpa.mask.nxv1f16.i64(<vscale x 1 x half> [[VD]], <vscale x 1 x half> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexpa_v_f16mf4_tum(vbool64_t vm, vfloat16mf4_t vd, vfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16mf4_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexpa_v_f16mf2_tum(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x half> [[VD:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexpa.mask.nxv2f16.i64(<vscale x 2 x half> [[VD]], <vscale x 2 x half> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexpa_v_f16mf2_tum(vbool32_t vm, vfloat16mf2_t vd, vfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16mf2_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexpa_v_f16m1_tum(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x half> [[VD:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexpa.mask.nxv4f16.i64(<vscale x 4 x half> [[VD]], <vscale x 4 x half> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexpa_v_f16m1_tum(vbool16_t vm, vfloat16m1_t vd, vfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m1_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexpa_v_f16m2_tum(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x half> [[VD:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexpa.mask.nxv8f16.i64(<vscale x 8 x half> [[VD]], <vscale x 8 x half> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexpa_v_f16m2_tum(vbool8_t vm, vfloat16m2_t vd, vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m2_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexpa_v_f16m4_tum(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x half> [[VD:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexpa.mask.nxv16f16.i64(<vscale x 16 x half> [[VD]], <vscale x 16 x half> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexpa_v_f16m4_tum(vbool4_t vm, vfloat16m4_t vd, vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m4_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexpa_v_f16m8_tum(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x half> [[VD:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexpa.mask.nxv32f16.i64(<vscale x 32 x half> [[VD]], <vscale x 32 x half> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexpa_v_f16m8_tum(vbool2_t vm, vfloat16m8_t vd, vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m8_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexpa_v_f32mf2_tum(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x float> [[VD:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexpa.mask.nxv1f32.i64(<vscale x 1 x float> [[VD]], <vscale x 1 x float> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexpa_v_f32mf2_tum(vbool64_t vm, vfloat32mf2_t vd, vfloat32mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32mf2_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexpa_v_f32m1_tum(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x float> [[VD:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexpa.mask.nxv2f32.i64(<vscale x 2 x float> [[VD]], <vscale x 2 x float> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexpa_v_f32m1_tum(vbool32_t vm, vfloat32m1_t vd, vfloat32m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m1_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexpa_v_f32m2_tum(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x float> [[VD:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexpa.mask.nxv4f32.i64(<vscale x 4 x float> [[VD]], <vscale x 4 x float> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexpa_v_f32m2_tum(vbool16_t vm, vfloat32m2_t vd, vfloat32m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m2_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexpa_v_f32m4_tum(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x float> [[VD:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexpa.mask.nxv8f32.i64(<vscale x 8 x float> [[VD]], <vscale x 8 x float> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexpa_v_f32m4_tum(vbool8_t vm, vfloat32m4_t vd, vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m4_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexpa_v_f32m8_tum(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x float> [[VD:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexpa.mask.nxv16f32.i64(<vscale x 16 x float> [[VD]], <vscale x 16 x float> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexpa_v_f32m8_tum(vbool4_t vm, vfloat32m8_t vd, vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m8_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexpa_v_f16mf4_tumu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x half> [[VD:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexpa.mask.nxv1f16.i64(<vscale x 1 x half> [[VD]], <vscale x 1 x half> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexpa_v_f16mf4_tumu(vbool64_t vm, vfloat16mf4_t vd, vfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16mf4_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexpa_v_f16mf2_tumu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x half> [[VD:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexpa.mask.nxv2f16.i64(<vscale x 2 x half> [[VD]], <vscale x 2 x half> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexpa_v_f16mf2_tumu(vbool32_t vm, vfloat16mf2_t vd, vfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16mf2_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexpa_v_f16m1_tumu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x half> [[VD:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexpa.mask.nxv4f16.i64(<vscale x 4 x half> [[VD]], <vscale x 4 x half> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexpa_v_f16m1_tumu(vbool16_t vm, vfloat16m1_t vd, vfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m1_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexpa_v_f16m2_tumu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x half> [[VD:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexpa.mask.nxv8f16.i64(<vscale x 8 x half> [[VD]], <vscale x 8 x half> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexpa_v_f16m2_tumu(vbool8_t vm, vfloat16m2_t vd, vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m2_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexpa_v_f16m4_tumu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x half> [[VD:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexpa.mask.nxv16f16.i64(<vscale x 16 x half> [[VD]], <vscale x 16 x half> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexpa_v_f16m4_tumu(vbool4_t vm, vfloat16m4_t vd, vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m4_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexpa_v_f16m8_tumu(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x half> [[VD:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexpa.mask.nxv32f16.i64(<vscale x 32 x half> [[VD]], <vscale x 32 x half> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexpa_v_f16m8_tumu(vbool2_t vm, vfloat16m8_t vd, vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m8_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexpa_v_f32mf2_tumu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x float> [[VD:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexpa.mask.nxv1f32.i64(<vscale x 1 x float> [[VD]], <vscale x 1 x float> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexpa_v_f32mf2_tumu(vbool64_t vm, vfloat32mf2_t vd, vfloat32mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32mf2_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexpa_v_f32m1_tumu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x float> [[VD:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexpa.mask.nxv2f32.i64(<vscale x 2 x float> [[VD]], <vscale x 2 x float> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexpa_v_f32m1_tumu(vbool32_t vm, vfloat32m1_t vd, vfloat32m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m1_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexpa_v_f32m2_tumu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x float> [[VD:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexpa.mask.nxv4f32.i64(<vscale x 4 x float> [[VD]], <vscale x 4 x float> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexpa_v_f32m2_tumu(vbool16_t vm, vfloat32m2_t vd, vfloat32m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m2_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexpa_v_f32m4_tumu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x float> [[VD:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexpa.mask.nxv8f32.i64(<vscale x 8 x float> [[VD]], <vscale x 8 x float> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexpa_v_f32m4_tumu(vbool8_t vm, vfloat32m4_t vd, vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m4_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexpa_v_f32m8_tumu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x float> [[VD:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexpa.mask.nxv16f32.i64(<vscale x 16 x float> [[VD]], <vscale x 16 x float> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexpa_v_f32m8_tumu(vbool4_t vm, vfloat32m8_t vd, vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m8_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexpa_v_f16mf4_mu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x half> [[VD:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexpa.mask.nxv1f16.i64(<vscale x 1 x half> [[VD]], <vscale x 1 x half> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexpa_v_f16mf4_mu(vbool64_t vm, vfloat16mf4_t vd, vfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16mf4_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexpa_v_f16mf2_mu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x half> [[VD:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexpa.mask.nxv2f16.i64(<vscale x 2 x half> [[VD]], <vscale x 2 x half> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexpa_v_f16mf2_mu(vbool32_t vm, vfloat16mf2_t vd, vfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16mf2_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexpa_v_f16m1_mu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x half> [[VD:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexpa.mask.nxv4f16.i64(<vscale x 4 x half> [[VD]], <vscale x 4 x half> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexpa_v_f16m1_mu(vbool16_t vm, vfloat16m1_t vd, vfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m1_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexpa_v_f16m2_mu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x half> [[VD:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexpa.mask.nxv8f16.i64(<vscale x 8 x half> [[VD]], <vscale x 8 x half> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexpa_v_f16m2_mu(vbool8_t vm, vfloat16m2_t vd, vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m2_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexpa_v_f16m4_mu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x half> [[VD:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexpa.mask.nxv16f16.i64(<vscale x 16 x half> [[VD]], <vscale x 16 x half> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexpa_v_f16m4_mu(vbool4_t vm, vfloat16m4_t vd, vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m4_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexpa_v_f16m8_mu(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x half> [[VD:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexpa.mask.nxv32f16.i64(<vscale x 32 x half> [[VD]], <vscale x 32 x half> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexpa_v_f16m8_mu(vbool2_t vm, vfloat16m8_t vd, vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f16m8_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexpa_v_f32mf2_mu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x float> [[VD:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexpa.mask.nxv1f32.i64(<vscale x 1 x float> [[VD]], <vscale x 1 x float> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexpa_v_f32mf2_mu(vbool64_t vm, vfloat32mf2_t vd, vfloat32mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32mf2_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexpa_v_f32m1_mu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x float> [[VD:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexpa.mask.nxv2f32.i64(<vscale x 2 x float> [[VD]], <vscale x 2 x float> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexpa_v_f32m1_mu(vbool32_t vm, vfloat32m1_t vd, vfloat32m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m1_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexpa_v_f32m2_mu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x float> [[VD:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexpa.mask.nxv4f32.i64(<vscale x 4 x float> [[VD]], <vscale x 4 x float> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexpa_v_f32m2_mu(vbool16_t vm, vfloat32m2_t vd, vfloat32m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m2_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexpa_v_f32m4_mu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x float> [[VD:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexpa.mask.nxv8f32.i64(<vscale x 8 x float> [[VD]], <vscale x 8 x float> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexpa_v_f32m4_mu(vbool8_t vm, vfloat32m4_t vd, vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m4_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexpa_v_f32m8_mu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x float> [[VD:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexpa.mask.nxv16f32.i64(<vscale x 16 x float> [[VD]], <vscale x 16 x float> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexpa_v_f32m8_mu(vbool4_t vm, vfloat32m8_t vd, vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f32m8_mu(vm, vd, vs2, vl);
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexpa_v_64.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexpa_v_64.c
new file mode 100644
index 0000000..8638dc2
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/non-overloaded/sf_vfexpa_v_64.c
@@ -0,0 +1,167 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 4
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +xsfvfexpa64e \
+// RUN: -disable-O0-optnone -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x double> @test_sf_vfexpa_v_f64m1_tu(
+// CHECK-RV64-SAME: <vscale x 1 x double> [[VD:%.*]], <vscale x 1 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.sf.vfexpa.nxv1f64.i64(<vscale x 1 x double> [[VD]], <vscale x 1 x double> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
+//
+vfloat64m1_t test_sf_vfexpa_v_f64m1_tu(vfloat64m1_t vd, vfloat64m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m1_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x double> @test_sf_vfexpa_v_f64m2_tu(
+// CHECK-RV64-SAME: <vscale x 2 x double> [[VD:%.*]], <vscale x 2 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x double> @llvm.riscv.sf.vfexpa.nxv2f64.i64(<vscale x 2 x double> [[VD]], <vscale x 2 x double> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x double> [[TMP0]]
+//
+vfloat64m2_t test_sf_vfexpa_v_f64m2_tu(vfloat64m2_t vd, vfloat64m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m2_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x double> @test_sf_vfexpa_v_f64m4_tu(
+// CHECK-RV64-SAME: <vscale x 4 x double> [[VD:%.*]], <vscale x 4 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x double> @llvm.riscv.sf.vfexpa.nxv4f64.i64(<vscale x 4 x double> [[VD]], <vscale x 4 x double> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x double> [[TMP0]]
+//
+vfloat64m4_t test_sf_vfexpa_v_f64m4_tu(vfloat64m4_t vd, vfloat64m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m4_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x double> @test_sf_vfexpa_v_f64m8_tu(
+// CHECK-RV64-SAME: <vscale x 8 x double> [[VD:%.*]], <vscale x 8 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x double> @llvm.riscv.sf.vfexpa.nxv8f64.i64(<vscale x 8 x double> [[VD]], <vscale x 8 x double> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x double> [[TMP0]]
+//
+vfloat64m8_t test_sf_vfexpa_v_f64m8_tu(vfloat64m8_t vd, vfloat64m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m8_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x double> @test_sf_vfexpa_v_f64m1_tum(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x double> [[VD:%.*]], <vscale x 1 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.sf.vfexpa.mask.nxv1f64.i64(<vscale x 1 x double> [[VD]], <vscale x 1 x double> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
+//
+vfloat64m1_t test_sf_vfexpa_v_f64m1_tum(vbool64_t vm, vfloat64m1_t vd, vfloat64m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m1_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x double> @test_sf_vfexpa_v_f64m2_tum(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x double> [[VD:%.*]], <vscale x 2 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x double> @llvm.riscv.sf.vfexpa.mask.nxv2f64.i64(<vscale x 2 x double> [[VD]], <vscale x 2 x double> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 2 x double> [[TMP0]]
+//
+vfloat64m2_t test_sf_vfexpa_v_f64m2_tum(vbool32_t vm, vfloat64m2_t vd, vfloat64m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m2_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x double> @test_sf_vfexpa_v_f64m4_tum(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x double> [[VD:%.*]], <vscale x 4 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x double> @llvm.riscv.sf.vfexpa.mask.nxv4f64.i64(<vscale x 4 x double> [[VD]], <vscale x 4 x double> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 4 x double> [[TMP0]]
+//
+vfloat64m4_t test_sf_vfexpa_v_f64m4_tum(vbool16_t vm, vfloat64m4_t vd, vfloat64m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m4_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x double> @test_sf_vfexpa_v_f64m8_tum(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x double> [[VD:%.*]], <vscale x 8 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x double> @llvm.riscv.sf.vfexpa.mask.nxv8f64.i64(<vscale x 8 x double> [[VD]], <vscale x 8 x double> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 8 x double> [[TMP0]]
+//
+vfloat64m8_t test_sf_vfexpa_v_f64m8_tum(vbool8_t vm, vfloat64m8_t vd, vfloat64m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m8_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x double> @test_sf_vfexpa_v_f64m1_tumu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x double> [[VD:%.*]], <vscale x 1 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.sf.vfexpa.mask.nxv1f64.i64(<vscale x 1 x double> [[VD]], <vscale x 1 x double> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
+//
+vfloat64m1_t test_sf_vfexpa_v_f64m1_tumu(vbool64_t vm, vfloat64m1_t vd, vfloat64m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m1_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x double> @test_sf_vfexpa_v_f64m2_tumu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x double> [[VD:%.*]], <vscale x 2 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x double> @llvm.riscv.sf.vfexpa.mask.nxv2f64.i64(<vscale x 2 x double> [[VD]], <vscale x 2 x double> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 2 x double> [[TMP0]]
+//
+vfloat64m2_t test_sf_vfexpa_v_f64m2_tumu(vbool32_t vm, vfloat64m2_t vd, vfloat64m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m2_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x double> @test_sf_vfexpa_v_f64m4_tumu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x double> [[VD:%.*]], <vscale x 4 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x double> @llvm.riscv.sf.vfexpa.mask.nxv4f64.i64(<vscale x 4 x double> [[VD]], <vscale x 4 x double> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 4 x double> [[TMP0]]
+//
+vfloat64m4_t test_sf_vfexpa_v_f64m4_tumu(vbool16_t vm, vfloat64m4_t vd, vfloat64m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m4_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x double> @test_sf_vfexpa_v_f64m8_tumu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x double> [[VD:%.*]], <vscale x 8 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x double> @llvm.riscv.sf.vfexpa.mask.nxv8f64.i64(<vscale x 8 x double> [[VD]], <vscale x 8 x double> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 8 x double> [[TMP0]]
+//
+vfloat64m8_t test_sf_vfexpa_v_f64m8_tumu(vbool8_t vm, vfloat64m8_t vd, vfloat64m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m8_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x double> @test_sf_vfexpa_v_f64m1_mu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x double> [[VD:%.*]], <vscale x 1 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.sf.vfexpa.mask.nxv1f64.i64(<vscale x 1 x double> [[VD]], <vscale x 1 x double> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
+//
+vfloat64m1_t test_sf_vfexpa_v_f64m1_mu(vbool64_t vm, vfloat64m1_t vd, vfloat64m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m1_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x double> @test_sf_vfexpa_v_f64m2_mu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x double> [[VD:%.*]], <vscale x 2 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x double> @llvm.riscv.sf.vfexpa.mask.nxv2f64.i64(<vscale x 2 x double> [[VD]], <vscale x 2 x double> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 2 x double> [[TMP0]]
+//
+vfloat64m2_t test_sf_vfexpa_v_f64m2_mu(vbool32_t vm, vfloat64m2_t vd, vfloat64m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m2_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x double> @test_sf_vfexpa_v_f64m4_mu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x double> [[VD:%.*]], <vscale x 4 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x double> @llvm.riscv.sf.vfexpa.mask.nxv4f64.i64(<vscale x 4 x double> [[VD]], <vscale x 4 x double> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 4 x double> [[TMP0]]
+//
+vfloat64m4_t test_sf_vfexpa_v_f64m4_mu(vbool16_t vm, vfloat64m4_t vd, vfloat64m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m4_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x double> @test_sf_vfexpa_v_f64m8_mu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x double> [[VD:%.*]], <vscale x 8 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x double> @llvm.riscv.sf.vfexpa.mask.nxv8f64.i64(<vscale x 8 x double> [[VD]], <vscale x 8 x double> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 8 x double> [[TMP0]]
+//
+vfloat64m8_t test_sf_vfexpa_v_f64m8_mu(vbool8_t vm, vfloat64m8_t vd, vfloat64m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_v_f64m8_mu(vm, vd, vs2, vl);
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexp_v_16.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexp_v_16.c
new file mode 100644
index 0000000..4ceeb7b
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexp_v_16.c
@@ -0,0 +1,261 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x -target-feature +zvfh \
+// RUN: -target-feature +xsfvfexp16e -disable-O0-optnone \
+// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexp_v_f16mf2_tu(
+// CHECK-RV64-SAME: <vscale x 2 x half> [[VD:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexp.nxv2f16.i64(<vscale x 2 x half> [[VD]], <vscale x 2 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexp_v_f16mf2_tu(vfloat16mf2_t vd, vfloat16mf2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexp_v_f16m1_tu(
+// CHECK-RV64-SAME: <vscale x 4 x half> [[VD:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexp.nxv4f16.i64(<vscale x 4 x half> [[VD]], <vscale x 4 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexp_v_f16m1_tu(vfloat16m1_t vd, vfloat16m1_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexp_v_f16m2_tu(
+// CHECK-RV64-SAME: <vscale x 8 x half> [[VD:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexp.nxv8f16.i64(<vscale x 8 x half> [[VD]], <vscale x 8 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexp_v_f16m2_tu(vfloat16m2_t vd, vfloat16m2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexp_v_f16m4_tu(
+// CHECK-RV64-SAME: <vscale x 16 x half> [[VD:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexp.nxv16f16.i64(<vscale x 16 x half> [[VD]], <vscale x 16 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexp_v_f16m4_tu(vfloat16m4_t vd, vfloat16m4_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexp_v_f16m8_tu(
+// CHECK-RV64-SAME: <vscale x 32 x half> [[VD:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexp.nxv32f16.i64(<vscale x 32 x half> [[VD]], <vscale x 32 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexp_v_f16m8_tu(vfloat16m8_t vd, vfloat16m8_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexp_v_f16mf4_tum(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x half> [[VD:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexp.mask.nxv1f16.i64(<vscale x 1 x half> [[VD]], <vscale x 1 x half> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexp_v_f16mf4_tum(vbool64_t vm, vfloat16mf4_t vd,
+ vfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexp_v_f16mf2_tum(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x half> [[VD:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexp.mask.nxv2f16.i64(<vscale x 2 x half> [[VD]], <vscale x 2 x half> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexp_v_f16mf2_tum(vbool32_t vm, vfloat16mf2_t vd,
+ vfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexp_v_f16m1_tum(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x half> [[VD:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexp.mask.nxv4f16.i64(<vscale x 4 x half> [[VD]], <vscale x 4 x half> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexp_v_f16m1_tum(vbool16_t vm, vfloat16m1_t vd,
+ vfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexp_v_f16m2_tum(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x half> [[VD:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexp.mask.nxv8f16.i64(<vscale x 8 x half> [[VD]], <vscale x 8 x half> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexp_v_f16m2_tum(vbool8_t vm, vfloat16m2_t vd,
+ vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexp_v_f16m4_tum(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x half> [[VD:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexp.mask.nxv16f16.i64(<vscale x 16 x half> [[VD]], <vscale x 16 x half> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexp_v_f16m4_tum(vbool4_t vm, vfloat16m4_t vd,
+ vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexp_v_f16m8_tum(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x half> [[VD:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexp.mask.nxv32f16.i64(<vscale x 32 x half> [[VD]], <vscale x 32 x half> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexp_v_f16m8_tum(vbool2_t vm, vfloat16m8_t vd,
+ vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexp_v_f16mf4_tumu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x half> [[VD:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexp.mask.nxv1f16.i64(<vscale x 1 x half> [[VD]], <vscale x 1 x half> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexp_v_f16mf4_tumu(vbool64_t vm, vfloat16mf4_t vd,
+ vfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexp_v_f16mf2_tumu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x half> [[VD:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexp.mask.nxv2f16.i64(<vscale x 2 x half> [[VD]], <vscale x 2 x half> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexp_v_f16mf2_tumu(vbool32_t vm, vfloat16mf2_t vd,
+ vfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexp_v_f16m1_tumu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x half> [[VD:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexp.mask.nxv4f16.i64(<vscale x 4 x half> [[VD]], <vscale x 4 x half> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexp_v_f16m1_tumu(vbool16_t vm, vfloat16m1_t vd,
+ vfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexp_v_f16m2_tumu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x half> [[VD:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexp.mask.nxv8f16.i64(<vscale x 8 x half> [[VD]], <vscale x 8 x half> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexp_v_f16m2_tumu(vbool8_t vm, vfloat16m2_t vd,
+ vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexp_v_f16m4_tumu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x half> [[VD:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexp.mask.nxv16f16.i64(<vscale x 16 x half> [[VD]], <vscale x 16 x half> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexp_v_f16m4_tumu(vbool4_t vm, vfloat16m4_t vd,
+ vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexp_v_f16m8_tumu(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x half> [[VD:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexp.mask.nxv32f16.i64(<vscale x 32 x half> [[VD]], <vscale x 32 x half> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexp_v_f16m8_tumu(vbool2_t vm, vfloat16m8_t vd,
+ vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexp_v_f16mf4_mu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x half> [[VD:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexp.mask.nxv1f16.i64(<vscale x 1 x half> [[VD]], <vscale x 1 x half> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexp_v_f16mf4_mu(vbool64_t vm, vfloat16mf4_t vd,
+ vfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexp_v_f16mf2_mu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x half> [[VD:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexp.mask.nxv2f16.i64(<vscale x 2 x half> [[VD]], <vscale x 2 x half> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexp_v_f16mf2_mu(vbool32_t vm, vfloat16mf2_t vd,
+ vfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexp_v_f16m1_mu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x half> [[VD:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexp.mask.nxv4f16.i64(<vscale x 4 x half> [[VD]], <vscale x 4 x half> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexp_v_f16m1_mu(vbool16_t vm, vfloat16m1_t vd,
+ vfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexp_v_f16m2_mu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x half> [[VD:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexp.mask.nxv8f16.i64(<vscale x 8 x half> [[VD]], <vscale x 8 x half> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexp_v_f16m2_mu(vbool8_t vm, vfloat16m2_t vd,
+ vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexp_v_f16m4_mu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x half> [[VD:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexp.mask.nxv16f16.i64(<vscale x 16 x half> [[VD]], <vscale x 16 x half> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexp_v_f16m4_mu(vbool4_t vm, vfloat16m4_t vd,
+ vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexp_v_f16m8_mu(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x half> [[VD:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexp.mask.nxv32f16.i64(<vscale x 32 x half> [[VD]], <vscale x 32 x half> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexp_v_f16m8_mu(vbool2_t vm, vfloat16m8_t vd,
+ vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_mu(vm, vd, vs2, vl);
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexp_v_32.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexp_v_32.c
new file mode 100644
index 0000000..e08d6c5b
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexp_v_32.c
@@ -0,0 +1,228 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x -target-feature +zve32f \
+// RUN: -target-feature +xsfvfexp32e -disable-O0-optnone \
+// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexp_v_f32mf2_tu(
+// CHECK-RV64-SAME: <vscale x 1 x float> [[VD:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexp.nxv1f32.i64(<vscale x 1 x float> [[VD]], <vscale x 1 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexp_v_f32mf2_tu(vfloat32mf2_t vd, vfloat32mf2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexp_v_f32m1_tu(
+// CHECK-RV64-SAME: <vscale x 2 x float> [[VD:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexp.nxv2f32.i64(<vscale x 2 x float> [[VD]], <vscale x 2 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexp_v_f32m1_tu(vfloat32m1_t vd, vfloat32m1_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexp_v_f32m2_tu(
+// CHECK-RV64-SAME: <vscale x 4 x float> [[VD:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexp.nxv4f32.i64(<vscale x 4 x float> [[VD]], <vscale x 4 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexp_v_f32m2_tu(vfloat32m2_t vd, vfloat32m2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexp_v_f32m4_tu(
+// CHECK-RV64-SAME: <vscale x 8 x float> [[VD:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexp.nxv8f32.i64(<vscale x 8 x float> [[VD]], <vscale x 8 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexp_v_f32m4_tu(vfloat32m4_t vd, vfloat32m4_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexp_v_f32m8_tu(
+// CHECK-RV64-SAME: <vscale x 16 x float> [[VD:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexp.nxv16f32.i64(<vscale x 16 x float> [[VD]], <vscale x 16 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexp_v_f32m8_tu(vfloat32m8_t vd, vfloat32m8_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexp_v_f32mf2_tum(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x float> [[VD:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexp.mask.nxv1f32.i64(<vscale x 1 x float> [[VD]], <vscale x 1 x float> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexp_v_f32mf2_tum(vbool64_t vm, vfloat32mf2_t vd,
+ vfloat32mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexp_v_f32m1_tum(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x float> [[VD:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexp.mask.nxv2f32.i64(<vscale x 2 x float> [[VD]], <vscale x 2 x float> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexp_v_f32m1_tum(vbool32_t vm, vfloat32m1_t vd,
+ vfloat32m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexp_v_f32m2_tum(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x float> [[VD:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexp.mask.nxv4f32.i64(<vscale x 4 x float> [[VD]], <vscale x 4 x float> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexp_v_f32m2_tum(vbool16_t vm, vfloat32m2_t vd,
+ vfloat32m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexp_v_f32m4_tum(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x float> [[VD:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexp.mask.nxv8f32.i64(<vscale x 8 x float> [[VD]], <vscale x 8 x float> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexp_v_f32m4_tum(vbool8_t vm, vfloat32m4_t vd,
+ vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexp_v_f32m8_tum(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x float> [[VD:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexp.mask.nxv16f32.i64(<vscale x 16 x float> [[VD]], <vscale x 16 x float> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexp_v_f32m8_tum(vbool4_t vm, vfloat32m8_t vd,
+ vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexp_v_f32mf2_tumu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x float> [[VD:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexp.mask.nxv1f32.i64(<vscale x 1 x float> [[VD]], <vscale x 1 x float> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexp_v_f32mf2_tumu(vbool64_t vm, vfloat32mf2_t vd,
+ vfloat32mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexp_v_f32m1_tumu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x float> [[VD:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexp.mask.nxv2f32.i64(<vscale x 2 x float> [[VD]], <vscale x 2 x float> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexp_v_f32m1_tumu(vbool32_t vm, vfloat32m1_t vd,
+ vfloat32m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexp_v_f32m2_tumu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x float> [[VD:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexp.mask.nxv4f32.i64(<vscale x 4 x float> [[VD]], <vscale x 4 x float> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexp_v_f32m2_tumu(vbool16_t vm, vfloat32m2_t vd,
+ vfloat32m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexp_v_f32m4_tumu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x float> [[VD:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexp.mask.nxv8f32.i64(<vscale x 8 x float> [[VD]], <vscale x 8 x float> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexp_v_f32m4_tumu(vbool8_t vm, vfloat32m4_t vd,
+ vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexp_v_f32m8_tumu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x float> [[VD:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexp.mask.nxv16f32.i64(<vscale x 16 x float> [[VD]], <vscale x 16 x float> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexp_v_f32m8_tumu(vbool4_t vm, vfloat32m8_t vd,
+ vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexp_v_f32mf2_mu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x float> [[VD:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexp.mask.nxv1f32.i64(<vscale x 1 x float> [[VD]], <vscale x 1 x float> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexp_v_f32mf2_mu(vbool64_t vm, vfloat32mf2_t vd,
+ vfloat32mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexp_v_f32m1_mu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x float> [[VD:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexp.mask.nxv2f32.i64(<vscale x 2 x float> [[VD]], <vscale x 2 x float> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexp_v_f32m1_mu(vbool32_t vm, vfloat32m1_t vd,
+ vfloat32m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexp_v_f32m2_mu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x float> [[VD:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexp.mask.nxv4f32.i64(<vscale x 4 x float> [[VD]], <vscale x 4 x float> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexp_v_f32m2_mu(vbool16_t vm, vfloat32m2_t vd,
+ vfloat32m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexp_v_f32m4_mu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x float> [[VD:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexp.mask.nxv8f32.i64(<vscale x 8 x float> [[VD]], <vscale x 8 x float> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexp_v_f32m4_mu(vbool8_t vm, vfloat32m4_t vd,
+ vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexp_v_f32m8_mu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x float> [[VD:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexp.mask.nxv16f32.i64(<vscale x 16 x float> [[VD]], <vscale x 16 x float> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexp_v_f32m8_mu(vbool4_t vm, vfloat32m8_t vd,
+ vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_mu(vm, vd, vs2, vl);
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexp_v_bf.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexp_v_bf.c
new file mode 100644
index 0000000..14570d4
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexp_v_bf.c
@@ -0,0 +1,272 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x -target-feature +zve32f \
+// RUN: -target-feature +zvfbfmin -target-feature +xsfvfbfexp16e -disable-O0-optnone \
+// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x bfloat> @test_sf_vfexp_v_bf16mf4_tu(
+// CHECK-RV64-SAME: <vscale x 1 x bfloat> [[VD:%.*]], <vscale x 1 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x bfloat> @llvm.riscv.sf.vfexp.nxv1bf16.i64(<vscale x 1 x bfloat> [[VD]], <vscale x 1 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x bfloat> [[TMP0]]
+//
+vbfloat16mf4_t test_sf_vfexp_v_bf16mf4_tu(vbfloat16mf4_t vd, vbfloat16mf4_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x bfloat> @test_sf_vfexp_v_bf16mf2_tu(
+// CHECK-RV64-SAME: <vscale x 2 x bfloat> [[VD:%.*]], <vscale x 2 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x bfloat> @llvm.riscv.sf.vfexp.nxv2bf16.i64(<vscale x 2 x bfloat> [[VD]], <vscale x 2 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x bfloat> [[TMP0]]
+//
+vbfloat16mf2_t test_sf_vfexp_v_bf16mf2_tu(vbfloat16mf2_t vd, vbfloat16mf2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x bfloat> @test_sf_vfexp_v_bf16m1_tu(
+// CHECK-RV64-SAME: <vscale x 4 x bfloat> [[VD:%.*]], <vscale x 4 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x bfloat> @llvm.riscv.sf.vfexp.nxv4bf16.i64(<vscale x 4 x bfloat> [[VD]], <vscale x 4 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x bfloat> [[TMP0]]
+//
+vbfloat16m1_t test_sf_vfexp_v_bf16m1_tu(vbfloat16m1_t vd, vbfloat16m1_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x bfloat> @test_sf_vfexp_v_bf16m2_tu(
+// CHECK-RV64-SAME: <vscale x 8 x bfloat> [[VD:%.*]], <vscale x 8 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x bfloat> @llvm.riscv.sf.vfexp.nxv8bf16.i64(<vscale x 8 x bfloat> [[VD]], <vscale x 8 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x bfloat> [[TMP0]]
+//
+vbfloat16m2_t test_sf_vfexp_v_bf16m2_tu(vbfloat16m2_t vd, vbfloat16m2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x bfloat> @test_sf_vfexp_v_bf16m4_tu(
+// CHECK-RV64-SAME: <vscale x 16 x bfloat> [[VD:%.*]], <vscale x 16 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x bfloat> @llvm.riscv.sf.vfexp.nxv16bf16.i64(<vscale x 16 x bfloat> [[VD]], <vscale x 16 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x bfloat> [[TMP0]]
+//
+vbfloat16m4_t test_sf_vfexp_v_bf16m4_tu(vbfloat16m4_t vd, vbfloat16m4_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x bfloat> @test_sf_vfexp_v_bf16m8_tu(
+// CHECK-RV64-SAME: <vscale x 32 x bfloat> [[VD:%.*]], <vscale x 32 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x bfloat> @llvm.riscv.sf.vfexp.nxv32bf16.i64(<vscale x 32 x bfloat> [[VD]], <vscale x 32 x bfloat> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
+//
+vbfloat16m8_t test_sf_vfexp_v_bf16m8_tu(vbfloat16m8_t vd, vbfloat16m8_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexp_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x bfloat> @test_sf_vfexp_v_bf16mf4_tum(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x bfloat> [[VD:%.*]], <vscale x 1 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv1bf16.i64(<vscale x 1 x bfloat> [[VD]], <vscale x 1 x bfloat> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 1 x bfloat> [[TMP0]]
+//
+vbfloat16mf4_t test_sf_vfexp_v_bf16mf4_tum(vbool64_t vm, vbfloat16mf4_t vd,
+ vbfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x bfloat> @test_sf_vfexp_v_bf16mf2_tum(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x bfloat> [[VD:%.*]], <vscale x 2 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv2bf16.i64(<vscale x 2 x bfloat> [[VD]], <vscale x 2 x bfloat> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 2 x bfloat> [[TMP0]]
+//
+vbfloat16mf2_t test_sf_vfexp_v_bf16mf2_tum(vbool32_t vm, vbfloat16mf2_t vd,
+ vbfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x bfloat> @test_sf_vfexp_v_bf16m1_tum(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x bfloat> [[VD:%.*]], <vscale x 4 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv4bf16.i64(<vscale x 4 x bfloat> [[VD]], <vscale x 4 x bfloat> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 4 x bfloat> [[TMP0]]
+//
+vbfloat16m1_t test_sf_vfexp_v_bf16m1_tum(vbool16_t vm, vbfloat16m1_t vd,
+ vbfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x bfloat> @test_sf_vfexp_v_bf16m2_tum(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x bfloat> [[VD:%.*]], <vscale x 8 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv8bf16.i64(<vscale x 8 x bfloat> [[VD]], <vscale x 8 x bfloat> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 8 x bfloat> [[TMP0]]
+//
+vbfloat16m2_t test_sf_vfexp_v_bf16m2_tum(vbool8_t vm, vbfloat16m2_t vd,
+ vbfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x bfloat> @test_sf_vfexp_v_bf16m4_tum(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x bfloat> [[VD:%.*]], <vscale x 16 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv16bf16.i64(<vscale x 16 x bfloat> [[VD]], <vscale x 16 x bfloat> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 16 x bfloat> [[TMP0]]
+//
+vbfloat16m4_t test_sf_vfexp_v_bf16m4_tum(vbool4_t vm, vbfloat16m4_t vd,
+ vbfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x bfloat> @test_sf_vfexp_v_bf16m8_tum(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x bfloat> [[VD:%.*]], <vscale x 32 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv32bf16.i64(<vscale x 32 x bfloat> [[VD]], <vscale x 32 x bfloat> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
+//
+vbfloat16m8_t test_sf_vfexp_v_bf16m8_tum(vbool2_t vm, vbfloat16m8_t vd,
+ vbfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x bfloat> @test_sf_vfexp_v_bf16mf4_tumu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x bfloat> [[VD:%.*]], <vscale x 1 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv1bf16.i64(<vscale x 1 x bfloat> [[VD]], <vscale x 1 x bfloat> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 1 x bfloat> [[TMP0]]
+//
+vbfloat16mf4_t test_sf_vfexp_v_bf16mf4_tumu(vbool64_t vm, vbfloat16mf4_t vd,
+ vbfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x bfloat> @test_sf_vfexp_v_bf16mf2_tumu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x bfloat> [[VD:%.*]], <vscale x 2 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv2bf16.i64(<vscale x 2 x bfloat> [[VD]], <vscale x 2 x bfloat> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 2 x bfloat> [[TMP0]]
+//
+vbfloat16mf2_t test_sf_vfexp_v_bf16mf2_tumu(vbool32_t vm, vbfloat16mf2_t vd,
+ vbfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x bfloat> @test_sf_vfexp_v_bf16m1_tumu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x bfloat> [[VD:%.*]], <vscale x 4 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv4bf16.i64(<vscale x 4 x bfloat> [[VD]], <vscale x 4 x bfloat> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 4 x bfloat> [[TMP0]]
+//
+vbfloat16m1_t test_sf_vfexp_v_bf16m1_tumu(vbool16_t vm, vbfloat16m1_t vd,
+ vbfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x bfloat> @test_sf_vfexp_v_bf16m2_tumu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x bfloat> [[VD:%.*]], <vscale x 8 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv8bf16.i64(<vscale x 8 x bfloat> [[VD]], <vscale x 8 x bfloat> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 8 x bfloat> [[TMP0]]
+//
+vbfloat16m2_t test_sf_vfexp_v_bf16m2_tumu(vbool8_t vm, vbfloat16m2_t vd,
+ vbfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x bfloat> @test_sf_vfexp_v_bf16m4_tumu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x bfloat> [[VD:%.*]], <vscale x 16 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv16bf16.i64(<vscale x 16 x bfloat> [[VD]], <vscale x 16 x bfloat> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 16 x bfloat> [[TMP0]]
+//
+vbfloat16m4_t test_sf_vfexp_v_bf16m4_tumu(vbool4_t vm, vbfloat16m4_t vd,
+ vbfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x bfloat> @test_sf_vfexp_v_bf16m8_tumu(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x bfloat> [[VD:%.*]], <vscale x 32 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv32bf16.i64(<vscale x 32 x bfloat> [[VD]], <vscale x 32 x bfloat> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
+//
+vbfloat16m8_t test_sf_vfexp_v_bf16m8_tumu(vbool2_t vm, vbfloat16m8_t vd,
+ vbfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x bfloat> @test_sf_vfexp_v_bf16mf4_mu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x bfloat> [[VD:%.*]], <vscale x 1 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv1bf16.i64(<vscale x 1 x bfloat> [[VD]], <vscale x 1 x bfloat> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 1 x bfloat> [[TMP0]]
+//
+vbfloat16mf4_t test_sf_vfexp_v_bf16mf4_mu(vbool64_t vm, vbfloat16mf4_t vd,
+ vbfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x bfloat> @test_sf_vfexp_v_bf16mf2_mu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x bfloat> [[VD:%.*]], <vscale x 2 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv2bf16.i64(<vscale x 2 x bfloat> [[VD]], <vscale x 2 x bfloat> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 2 x bfloat> [[TMP0]]
+//
+vbfloat16mf2_t test_sf_vfexp_v_bf16mf2_mu(vbool32_t vm, vbfloat16mf2_t vd,
+ vbfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x bfloat> @test_sf_vfexp_v_bf16m1_mu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x bfloat> [[VD:%.*]], <vscale x 4 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv4bf16.i64(<vscale x 4 x bfloat> [[VD]], <vscale x 4 x bfloat> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 4 x bfloat> [[TMP0]]
+//
+vbfloat16m1_t test_sf_vfexp_v_bf16m1_mu(vbool16_t vm, vbfloat16m1_t vd,
+ vbfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x bfloat> @test_sf_vfexp_v_bf16m2_mu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x bfloat> [[VD:%.*]], <vscale x 8 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv8bf16.i64(<vscale x 8 x bfloat> [[VD]], <vscale x 8 x bfloat> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 8 x bfloat> [[TMP0]]
+//
+vbfloat16m2_t test_sf_vfexp_v_bf16m2_mu(vbool8_t vm, vbfloat16m2_t vd,
+ vbfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x bfloat> @test_sf_vfexp_v_bf16m4_mu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x bfloat> [[VD:%.*]], <vscale x 16 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv16bf16.i64(<vscale x 16 x bfloat> [[VD]], <vscale x 16 x bfloat> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 16 x bfloat> [[TMP0]]
+//
+vbfloat16m4_t test_sf_vfexp_v_bf16m4_mu(vbool4_t vm, vbfloat16m4_t vd,
+ vbfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x bfloat> @test_sf_vfexp_v_bf16m8_mu(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x bfloat> [[VD:%.*]], <vscale x 32 x bfloat> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: [[ENTRY:.*:]]
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x bfloat> @llvm.riscv.sf.vfexp.mask.nxv32bf16.i64(<vscale x 32 x bfloat> [[VD]], <vscale x 32 x bfloat> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
+//
+vbfloat16m8_t test_sf_vfexp_v_bf16m8_mu(vbool2_t vm, vbfloat16m8_t vd,
+ vbfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexp_mu(vm, vd, vs2, vl);
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexpa_v.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexpa_v.c
new file mode 100644
index 0000000..4ac5cfc
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexpa_v.c
@@ -0,0 +1,492 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 4
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64f -target-feature +zvfh \
+// RUN: -target-feature +xsfvfexpa -disable-O0-optnone \
+// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexpa_v_f16mf4_tu(
+// CHECK-RV64-SAME: <vscale x 1 x half> [[VD:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexpa.nxv1f16.i64(<vscale x 1 x half> [[VD]], <vscale x 1 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexpa_v_f16mf4_tu(vfloat16mf4_t vd, vfloat16mf4_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexpa_v_f16mf2_tu(
+// CHECK-RV64-SAME: <vscale x 2 x half> [[VD:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexpa.nxv2f16.i64(<vscale x 2 x half> [[VD]], <vscale x 2 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexpa_v_f16mf2_tu(vfloat16mf2_t vd, vfloat16mf2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexpa_v_f16m1_tu(
+// CHECK-RV64-SAME: <vscale x 4 x half> [[VD:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexpa.nxv4f16.i64(<vscale x 4 x half> [[VD]], <vscale x 4 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexpa_v_f16m1_tu(vfloat16m1_t vd, vfloat16m1_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexpa_v_f16m2_tu(
+// CHECK-RV64-SAME: <vscale x 8 x half> [[VD:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexpa.nxv8f16.i64(<vscale x 8 x half> [[VD]], <vscale x 8 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexpa_v_f16m2_tu(vfloat16m2_t vd, vfloat16m2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexpa_v_f16m4_tu(
+// CHECK-RV64-SAME: <vscale x 16 x half> [[VD:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexpa.nxv16f16.i64(<vscale x 16 x half> [[VD]], <vscale x 16 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexpa_v_f16m4_tu(vfloat16m4_t vd, vfloat16m4_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexpa_v_f16m8_tu(
+// CHECK-RV64-SAME: <vscale x 32 x half> [[VD:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexpa.nxv32f16.i64(<vscale x 32 x half> [[VD]], <vscale x 32 x half> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexpa_v_f16m8_tu(vfloat16m8_t vd, vfloat16m8_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexpa_v_f32mf2_tu(
+// CHECK-RV64-SAME: <vscale x 1 x float> [[VD:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexpa.nxv1f32.i64(<vscale x 1 x float> [[VD]], <vscale x 1 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexpa_v_f32mf2_tu(vfloat32mf2_t vd, vfloat32mf2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexpa_v_f32m1_tu(
+// CHECK-RV64-SAME: <vscale x 2 x float> [[VD:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexpa.nxv2f32.i64(<vscale x 2 x float> [[VD]], <vscale x 2 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexpa_v_f32m1_tu(vfloat32m1_t vd, vfloat32m1_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexpa_v_f32m2_tu(
+// CHECK-RV64-SAME: <vscale x 4 x float> [[VD:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexpa.nxv4f32.i64(<vscale x 4 x float> [[VD]], <vscale x 4 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexpa_v_f32m2_tu(vfloat32m2_t vd, vfloat32m2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexpa_v_f32m4_tu(
+// CHECK-RV64-SAME: <vscale x 8 x float> [[VD:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexpa.nxv8f32.i64(<vscale x 8 x float> [[VD]], <vscale x 8 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexpa_v_f32m4_tu(vfloat32m4_t vd, vfloat32m4_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexpa_v_f32m8_tu(
+// CHECK-RV64-SAME: <vscale x 16 x float> [[VD:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexpa.nxv16f32.i64(<vscale x 16 x float> [[VD]], <vscale x 16 x float> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexpa_v_f32m8_tu(vfloat32m8_t vd, vfloat32m8_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexpa_v_f16mf4_tum(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x half> [[VD:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexpa.mask.nxv1f16.i64(<vscale x 1 x half> [[VD]], <vscale x 1 x half> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexpa_v_f16mf4_tum(vbool64_t vm, vfloat16mf4_t vd,
+ vfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexpa_v_f16mf2_tum(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x half> [[VD:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexpa.mask.nxv2f16.i64(<vscale x 2 x half> [[VD]], <vscale x 2 x half> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexpa_v_f16mf2_tum(vbool32_t vm, vfloat16mf2_t vd,
+ vfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexpa_v_f16m1_tum(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x half> [[VD:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexpa.mask.nxv4f16.i64(<vscale x 4 x half> [[VD]], <vscale x 4 x half> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexpa_v_f16m1_tum(vbool16_t vm, vfloat16m1_t vd,
+ vfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexpa_v_f16m2_tum(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x half> [[VD:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexpa.mask.nxv8f16.i64(<vscale x 8 x half> [[VD]], <vscale x 8 x half> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexpa_v_f16m2_tum(vbool8_t vm, vfloat16m2_t vd,
+ vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexpa_v_f16m4_tum(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x half> [[VD:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexpa.mask.nxv16f16.i64(<vscale x 16 x half> [[VD]], <vscale x 16 x half> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexpa_v_f16m4_tum(vbool4_t vm, vfloat16m4_t vd,
+ vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexpa_v_f16m8_tum(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x half> [[VD:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexpa.mask.nxv32f16.i64(<vscale x 32 x half> [[VD]], <vscale x 32 x half> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexpa_v_f16m8_tum(vbool2_t vm, vfloat16m8_t vd,
+ vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexpa_v_f32mf2_tum(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x float> [[VD:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexpa.mask.nxv1f32.i64(<vscale x 1 x float> [[VD]], <vscale x 1 x float> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexpa_v_f32mf2_tum(vbool64_t vm, vfloat32mf2_t vd,
+ vfloat32mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexpa_v_f32m1_tum(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x float> [[VD:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexpa.mask.nxv2f32.i64(<vscale x 2 x float> [[VD]], <vscale x 2 x float> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexpa_v_f32m1_tum(vbool32_t vm, vfloat32m1_t vd,
+ vfloat32m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexpa_v_f32m2_tum(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x float> [[VD:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexpa.mask.nxv4f32.i64(<vscale x 4 x float> [[VD]], <vscale x 4 x float> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexpa_v_f32m2_tum(vbool16_t vm, vfloat32m2_t vd,
+ vfloat32m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexpa_v_f32m4_tum(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x float> [[VD:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexpa.mask.nxv8f32.i64(<vscale x 8 x float> [[VD]], <vscale x 8 x float> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexpa_v_f32m4_tum(vbool8_t vm, vfloat32m4_t vd,
+ vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexpa_v_f32m8_tum(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x float> [[VD:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexpa.mask.nxv16f32.i64(<vscale x 16 x float> [[VD]], <vscale x 16 x float> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexpa_v_f32m8_tum(vbool4_t vm, vfloat32m8_t vd,
+ vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexpa_v_f16mf4_tumu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x half> [[VD:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexpa.mask.nxv1f16.i64(<vscale x 1 x half> [[VD]], <vscale x 1 x half> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexpa_v_f16mf4_tumu(vbool64_t vm, vfloat16mf4_t vd,
+ vfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexpa_v_f16mf2_tumu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x half> [[VD:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexpa.mask.nxv2f16.i64(<vscale x 2 x half> [[VD]], <vscale x 2 x half> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexpa_v_f16mf2_tumu(vbool32_t vm, vfloat16mf2_t vd,
+ vfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexpa_v_f16m1_tumu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x half> [[VD:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexpa.mask.nxv4f16.i64(<vscale x 4 x half> [[VD]], <vscale x 4 x half> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexpa_v_f16m1_tumu(vbool16_t vm, vfloat16m1_t vd,
+ vfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexpa_v_f16m2_tumu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x half> [[VD:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexpa.mask.nxv8f16.i64(<vscale x 8 x half> [[VD]], <vscale x 8 x half> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexpa_v_f16m2_tumu(vbool8_t vm, vfloat16m2_t vd,
+ vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexpa_v_f16m4_tumu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x half> [[VD:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexpa.mask.nxv16f16.i64(<vscale x 16 x half> [[VD]], <vscale x 16 x half> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexpa_v_f16m4_tumu(vbool4_t vm, vfloat16m4_t vd,
+ vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexpa_v_f16m8_tumu(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x half> [[VD:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexpa.mask.nxv32f16.i64(<vscale x 32 x half> [[VD]], <vscale x 32 x half> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexpa_v_f16m8_tumu(vbool2_t vm, vfloat16m8_t vd,
+ vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexpa_v_f32mf2_tumu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x float> [[VD:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexpa.mask.nxv1f32.i64(<vscale x 1 x float> [[VD]], <vscale x 1 x float> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexpa_v_f32mf2_tumu(vbool64_t vm, vfloat32mf2_t vd,
+ vfloat32mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexpa_v_f32m1_tumu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x float> [[VD:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexpa.mask.nxv2f32.i64(<vscale x 2 x float> [[VD]], <vscale x 2 x float> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexpa_v_f32m1_tumu(vbool32_t vm, vfloat32m1_t vd,
+ vfloat32m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexpa_v_f32m2_tumu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x float> [[VD:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexpa.mask.nxv4f32.i64(<vscale x 4 x float> [[VD]], <vscale x 4 x float> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexpa_v_f32m2_tumu(vbool16_t vm, vfloat32m2_t vd,
+ vfloat32m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexpa_v_f32m4_tumu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x float> [[VD:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexpa.mask.nxv8f32.i64(<vscale x 8 x float> [[VD]], <vscale x 8 x float> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexpa_v_f32m4_tumu(vbool8_t vm, vfloat32m4_t vd,
+ vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexpa_v_f32m8_tumu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x float> [[VD:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexpa.mask.nxv16f32.i64(<vscale x 16 x float> [[VD]], <vscale x 16 x float> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexpa_v_f32m8_tumu(vbool4_t vm, vfloat32m8_t vd,
+ vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x half> @test_sf_vfexpa_v_f16mf4_mu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x half> [[VD:%.*]], <vscale x 1 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x half> @llvm.riscv.sf.vfexpa.mask.nxv1f16.i64(<vscale x 1 x half> [[VD]], <vscale x 1 x half> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 1 x half> [[TMP0]]
+//
+vfloat16mf4_t test_sf_vfexpa_v_f16mf4_mu(vbool64_t vm, vfloat16mf4_t vd,
+ vfloat16mf4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x half> @test_sf_vfexpa_v_f16mf2_mu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x half> [[VD:%.*]], <vscale x 2 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x half> @llvm.riscv.sf.vfexpa.mask.nxv2f16.i64(<vscale x 2 x half> [[VD]], <vscale x 2 x half> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 2 x half> [[TMP0]]
+//
+vfloat16mf2_t test_sf_vfexpa_v_f16mf2_mu(vbool32_t vm, vfloat16mf2_t vd,
+ vfloat16mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x half> @test_sf_vfexpa_v_f16m1_mu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x half> [[VD:%.*]], <vscale x 4 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x half> @llvm.riscv.sf.vfexpa.mask.nxv4f16.i64(<vscale x 4 x half> [[VD]], <vscale x 4 x half> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 4 x half> [[TMP0]]
+//
+vfloat16m1_t test_sf_vfexpa_v_f16m1_mu(vbool16_t vm, vfloat16m1_t vd,
+ vfloat16m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x half> @test_sf_vfexpa_v_f16m2_mu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x half> [[VD:%.*]], <vscale x 8 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x half> @llvm.riscv.sf.vfexpa.mask.nxv8f16.i64(<vscale x 8 x half> [[VD]], <vscale x 8 x half> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 8 x half> [[TMP0]]
+//
+vfloat16m2_t test_sf_vfexpa_v_f16m2_mu(vbool8_t vm, vfloat16m2_t vd,
+ vfloat16m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x half> @test_sf_vfexpa_v_f16m4_mu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x half> [[VD:%.*]], <vscale x 16 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x half> @llvm.riscv.sf.vfexpa.mask.nxv16f16.i64(<vscale x 16 x half> [[VD]], <vscale x 16 x half> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 16 x half> [[TMP0]]
+//
+vfloat16m4_t test_sf_vfexpa_v_f16m4_mu(vbool4_t vm, vfloat16m4_t vd,
+ vfloat16m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 32 x half> @test_sf_vfexpa_v_f16m8_mu(
+// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x half> [[VD:%.*]], <vscale x 32 x half> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x half> @llvm.riscv.sf.vfexpa.mask.nxv32f16.i64(<vscale x 32 x half> [[VD]], <vscale x 32 x half> [[VS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 32 x half> [[TMP0]]
+//
+vfloat16m8_t test_sf_vfexpa_v_f16m8_mu(vbool2_t vm, vfloat16m8_t vd,
+ vfloat16m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x float> @test_sf_vfexpa_v_f32mf2_mu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x float> [[VD:%.*]], <vscale x 1 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x float> @llvm.riscv.sf.vfexpa.mask.nxv1f32.i64(<vscale x 1 x float> [[VD]], <vscale x 1 x float> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 1 x float> [[TMP0]]
+//
+vfloat32mf2_t test_sf_vfexpa_v_f32mf2_mu(vbool64_t vm, vfloat32mf2_t vd,
+ vfloat32mf2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x float> @test_sf_vfexpa_v_f32m1_mu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x float> [[VD:%.*]], <vscale x 2 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.sf.vfexpa.mask.nxv2f32.i64(<vscale x 2 x float> [[VD]], <vscale x 2 x float> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
+//
+vfloat32m1_t test_sf_vfexpa_v_f32m1_mu(vbool32_t vm, vfloat32m1_t vd,
+ vfloat32m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x float> @test_sf_vfexpa_v_f32m2_mu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x float> [[VD:%.*]], <vscale x 4 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x float> @llvm.riscv.sf.vfexpa.mask.nxv4f32.i64(<vscale x 4 x float> [[VD]], <vscale x 4 x float> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 4 x float> [[TMP0]]
+//
+vfloat32m2_t test_sf_vfexpa_v_f32m2_mu(vbool16_t vm, vfloat32m2_t vd,
+ vfloat32m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x float> @test_sf_vfexpa_v_f32m4_mu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x float> [[VD:%.*]], <vscale x 8 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x float> @llvm.riscv.sf.vfexpa.mask.nxv8f32.i64(<vscale x 8 x float> [[VD]], <vscale x 8 x float> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 8 x float> [[TMP0]]
+//
+vfloat32m4_t test_sf_vfexpa_v_f32m4_mu(vbool8_t vm, vfloat32m4_t vd,
+ vfloat32m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 16 x float> @test_sf_vfexpa_v_f32m8_mu(
+// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x float> [[VD:%.*]], <vscale x 16 x float> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x float> @llvm.riscv.sf.vfexpa.mask.nxv16f32.i64(<vscale x 16 x float> [[VD]], <vscale x 16 x float> [[VS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 16 x float> [[TMP0]]
+//
+vfloat32m8_t test_sf_vfexpa_v_f32m8_mu(vbool4_t vm, vfloat32m8_t vd,
+ vfloat32m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_mu(vm, vd, vs2, vl);
+}
diff --git a/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexpa_v_64.c b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexpa_v_64.c
new file mode 100644
index 0000000..d0faaee5
--- /dev/null
+++ b/clang/test/CodeGen/RISCV/rvv-intrinsics-sifive/policy/overloaded/sf_vfexpa_v_64.c
@@ -0,0 +1,183 @@
+// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 4
+// REQUIRES: riscv-registered-target
+// RUN: %clang_cc1 -triple riscv64 -target-feature +xsfvfexpa64e \
+// RUN: -disable-O0-optnone -emit-llvm %s -o - | opt -S -passes=mem2reg | \
+// RUN: FileCheck --check-prefix=CHECK-RV64 %s
+
+#include <sifive_vector.h>
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x double> @test_sf_vfexpa_v_f64m1_tu(
+// CHECK-RV64-SAME: <vscale x 1 x double> [[VD:%.*]], <vscale x 1 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.sf.vfexpa.nxv1f64.i64(<vscale x 1 x double> [[VD]], <vscale x 1 x double> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
+//
+vfloat64m1_t test_sf_vfexpa_v_f64m1_tu(vfloat64m1_t vd, vfloat64m1_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x double> @test_sf_vfexpa_v_f64m2_tu(
+// CHECK-RV64-SAME: <vscale x 2 x double> [[VD:%.*]], <vscale x 2 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x double> @llvm.riscv.sf.vfexpa.nxv2f64.i64(<vscale x 2 x double> [[VD]], <vscale x 2 x double> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 2 x double> [[TMP0]]
+//
+vfloat64m2_t test_sf_vfexpa_v_f64m2_tu(vfloat64m2_t vd, vfloat64m2_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x double> @test_sf_vfexpa_v_f64m4_tu(
+// CHECK-RV64-SAME: <vscale x 4 x double> [[VD:%.*]], <vscale x 4 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x double> @llvm.riscv.sf.vfexpa.nxv4f64.i64(<vscale x 4 x double> [[VD]], <vscale x 4 x double> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 4 x double> [[TMP0]]
+//
+vfloat64m4_t test_sf_vfexpa_v_f64m4_tu(vfloat64m4_t vd, vfloat64m4_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x double> @test_sf_vfexpa_v_f64m8_tu(
+// CHECK-RV64-SAME: <vscale x 8 x double> [[VD:%.*]], <vscale x 8 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x double> @llvm.riscv.sf.vfexpa.nxv8f64.i64(<vscale x 8 x double> [[VD]], <vscale x 8 x double> [[VS2]], i64 [[VL]])
+// CHECK-RV64-NEXT: ret <vscale x 8 x double> [[TMP0]]
+//
+vfloat64m8_t test_sf_vfexpa_v_f64m8_tu(vfloat64m8_t vd, vfloat64m8_t vs2,
+ size_t vl) {
+ return __riscv_sf_vfexpa_tu(vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x double> @test_sf_vfexpa_v_f64m1_tum(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x double> [[VD:%.*]], <vscale x 1 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.sf.vfexpa.mask.nxv1f64.i64(<vscale x 1 x double> [[VD]], <vscale x 1 x double> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
+//
+vfloat64m1_t test_sf_vfexpa_v_f64m1_tum(vbool64_t vm, vfloat64m1_t vd,
+ vfloat64m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x double> @test_sf_vfexpa_v_f64m2_tum(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x double> [[VD:%.*]], <vscale x 2 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x double> @llvm.riscv.sf.vfexpa.mask.nxv2f64.i64(<vscale x 2 x double> [[VD]], <vscale x 2 x double> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 2 x double> [[TMP0]]
+//
+vfloat64m2_t test_sf_vfexpa_v_f64m2_tum(vbool32_t vm, vfloat64m2_t vd,
+ vfloat64m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x double> @test_sf_vfexpa_v_f64m4_tum(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x double> [[VD:%.*]], <vscale x 4 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x double> @llvm.riscv.sf.vfexpa.mask.nxv4f64.i64(<vscale x 4 x double> [[VD]], <vscale x 4 x double> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 4 x double> [[TMP0]]
+//
+vfloat64m4_t test_sf_vfexpa_v_f64m4_tum(vbool16_t vm, vfloat64m4_t vd,
+ vfloat64m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x double> @test_sf_vfexpa_v_f64m8_tum(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x double> [[VD:%.*]], <vscale x 8 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x double> @llvm.riscv.sf.vfexpa.mask.nxv8f64.i64(<vscale x 8 x double> [[VD]], <vscale x 8 x double> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 2)
+// CHECK-RV64-NEXT: ret <vscale x 8 x double> [[TMP0]]
+//
+vfloat64m8_t test_sf_vfexpa_v_f64m8_tum(vbool8_t vm, vfloat64m8_t vd,
+ vfloat64m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tum(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x double> @test_sf_vfexpa_v_f64m1_tumu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x double> [[VD:%.*]], <vscale x 1 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.sf.vfexpa.mask.nxv1f64.i64(<vscale x 1 x double> [[VD]], <vscale x 1 x double> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
+//
+vfloat64m1_t test_sf_vfexpa_v_f64m1_tumu(vbool64_t vm, vfloat64m1_t vd,
+ vfloat64m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x double> @test_sf_vfexpa_v_f64m2_tumu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x double> [[VD:%.*]], <vscale x 2 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x double> @llvm.riscv.sf.vfexpa.mask.nxv2f64.i64(<vscale x 2 x double> [[VD]], <vscale x 2 x double> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 2 x double> [[TMP0]]
+//
+vfloat64m2_t test_sf_vfexpa_v_f64m2_tumu(vbool32_t vm, vfloat64m2_t vd,
+ vfloat64m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x double> @test_sf_vfexpa_v_f64m4_tumu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x double> [[VD:%.*]], <vscale x 4 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x double> @llvm.riscv.sf.vfexpa.mask.nxv4f64.i64(<vscale x 4 x double> [[VD]], <vscale x 4 x double> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 4 x double> [[TMP0]]
+//
+vfloat64m4_t test_sf_vfexpa_v_f64m4_tumu(vbool16_t vm, vfloat64m4_t vd,
+ vfloat64m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x double> @test_sf_vfexpa_v_f64m8_tumu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x double> [[VD:%.*]], <vscale x 8 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x double> @llvm.riscv.sf.vfexpa.mask.nxv8f64.i64(<vscale x 8 x double> [[VD]], <vscale x 8 x double> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 0)
+// CHECK-RV64-NEXT: ret <vscale x 8 x double> [[TMP0]]
+//
+vfloat64m8_t test_sf_vfexpa_v_f64m8_tumu(vbool8_t vm, vfloat64m8_t vd,
+ vfloat64m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_tumu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 1 x double> @test_sf_vfexpa_v_f64m1_mu(
+// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x double> [[VD:%.*]], <vscale x 1 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.sf.vfexpa.mask.nxv1f64.i64(<vscale x 1 x double> [[VD]], <vscale x 1 x double> [[VS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
+//
+vfloat64m1_t test_sf_vfexpa_v_f64m1_mu(vbool64_t vm, vfloat64m1_t vd,
+ vfloat64m1_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 2 x double> @test_sf_vfexpa_v_f64m2_mu(
+// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x double> [[VD:%.*]], <vscale x 2 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x double> @llvm.riscv.sf.vfexpa.mask.nxv2f64.i64(<vscale x 2 x double> [[VD]], <vscale x 2 x double> [[VS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 2 x double> [[TMP0]]
+//
+vfloat64m2_t test_sf_vfexpa_v_f64m2_mu(vbool32_t vm, vfloat64m2_t vd,
+ vfloat64m2_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 4 x double> @test_sf_vfexpa_v_f64m4_mu(
+// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x double> [[VD:%.*]], <vscale x 4 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x double> @llvm.riscv.sf.vfexpa.mask.nxv4f64.i64(<vscale x 4 x double> [[VD]], <vscale x 4 x double> [[VS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 4 x double> [[TMP0]]
+//
+vfloat64m4_t test_sf_vfexpa_v_f64m4_mu(vbool16_t vm, vfloat64m4_t vd,
+ vfloat64m4_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_mu(vm, vd, vs2, vl);
+}
+
+// CHECK-RV64-LABEL: define dso_local <vscale x 8 x double> @test_sf_vfexpa_v_f64m8_mu(
+// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x double> [[VD:%.*]], <vscale x 8 x double> [[VS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {
+// CHECK-RV64-NEXT: entry:
+// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x double> @llvm.riscv.sf.vfexpa.mask.nxv8f64.i64(<vscale x 8 x double> [[VD]], <vscale x 8 x double> [[VS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 1)
+// CHECK-RV64-NEXT: ret <vscale x 8 x double> [[TMP0]]
+//
+vfloat64m8_t test_sf_vfexpa_v_f64m8_mu(vbool8_t vm, vfloat64m8_t vd,
+ vfloat64m8_t vs2, size_t vl) {
+ return __riscv_sf_vfexpa_mu(vm, vd, vs2, vl);
+}
diff --git a/clang/test/CodeGen/SystemZ/builtins-systemz-zvector.c b/clang/test/CodeGen/SystemZ/builtins-systemz-zvector.c
index d5d15b4d..35fde87 100644
--- a/clang/test/CodeGen/SystemZ/builtins-systemz-zvector.c
+++ b/clang/test/CodeGen/SystemZ/builtins-systemz-zvector.c
@@ -3584,13 +3584,13 @@ void test_integer(void) {
// CHECK-ASM: vsrlb
vsc = vec_abs(vsc);
- // CHECK-ASM: vlcb
+ // CHECK-ASM: vlpb
vss = vec_abs(vss);
- // CHECK-ASM: vlch
+ // CHECK-ASM: vlph
vsi = vec_abs(vsi);
- // CHECK-ASM: vlcf
+ // CHECK-ASM: vlpf
vsl = vec_abs(vsl);
- // CHECK-ASM: vlcg
+ // CHECK-ASM: vlpg
vsc = vec_max(vsc, vsc);
// CHECK-ASM: vmxb
diff --git a/clang/test/CodeGen/SystemZ/builtins-systemz-zvector5.c b/clang/test/CodeGen/SystemZ/builtins-systemz-zvector5.c
index 6ee9e1e..cd0fafd 100644
--- a/clang/test/CodeGen/SystemZ/builtins-systemz-zvector5.c
+++ b/clang/test/CodeGen/SystemZ/builtins-systemz-zvector5.c
@@ -246,7 +246,7 @@ void test_integer(void) {
// CHECK-ASM: vctzq
vslll = vec_abs(vslll);
- // CHECK-ASM: vlcq
+ // CHECK-ASM: vlpq
vslll = vec_avg(vslll, vslll);
// CHECK: call i128 @llvm.s390.vavgq(i128 %{{.*}}, i128 %{{.*}})
diff --git a/clang/test/CodeGen/X86/math-builtins.c b/clang/test/CodeGen/X86/math-builtins.c
index a56f8ba..c7cd9ff 100644
--- a/clang/test/CodeGen/X86/math-builtins.c
+++ b/clang/test/CodeGen/X86/math-builtins.c
@@ -118,36 +118,36 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
__builtin_copysign(f,f); __builtin_copysignf(f,f); __builtin_copysignl(f,f); __builtin_copysignf128(f,f);
-// NO__ERRNO: declare double @llvm.copysign.f64(double, double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.copysign.f32(float, float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.copysign.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.copysign.f128(fp128, fp128) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.copysign.f64(double, double) [[READNONE_INTRINSIC:#[0-9]+]]
-// HAS_ERRNO: declare float @llvm.copysign.f32(float, float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.copysign.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare fp128 @llvm.copysign.f128(fp128, fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.copysign.f64(double, double) [[READNONE_INTRINSIC2:#[0-9]+]]
+// NO__ERRNO: declare float @llvm.copysign.f32(float, float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.copysign.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.copysign.f128(fp128, fp128) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.copysign.f64(double, double) [[READNONE_INTRINSIC2:#[0-9]+]]
+// HAS_ERRNO: declare float @llvm.copysign.f32(float, float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.copysign.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare fp128 @llvm.copysign.f128(fp128, fp128) [[READNONE_INTRINSIC2]]
__builtin_fabs(f); __builtin_fabsf(f); __builtin_fabsl(f); __builtin_fabsf128(f);
-// NO__ERRNO: declare double @llvm.fabs.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.fabs.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.fabs.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.fabs.f128(fp128) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.fabs.f64(double) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare float @llvm.fabs.f32(float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.fabs.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare fp128 @llvm.fabs.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.fabs.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.fabs.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.fabs.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.fabs.f128(fp128) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.fabs.f64(double) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare float @llvm.fabs.f32(float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.fabs.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare fp128 @llvm.fabs.f128(fp128) [[READNONE_INTRINSIC2]]
__builtin_frexp(f,i); __builtin_frexpf(f,i); __builtin_frexpl(f,i); __builtin_frexpf128(f,i);
-// NO__ERRNO: declare { double, i32 } @llvm.frexp.f64.i32(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare { float, i32 } @llvm.frexp.f32.i32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare { x86_fp80, i32 } @llvm.frexp.f80.i32(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare { fp128, i32 } @llvm.frexp.f128.i32(fp128) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare { double, i32 } @llvm.frexp.f64.i32(double) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare { float, i32 } @llvm.frexp.f32.i32(float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare { x86_fp80, i32 } @llvm.frexp.f80.i32(x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare { fp128, i32 } @llvm.frexp.f128.i32(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare { double, i32 } @llvm.frexp.f64.i32(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare { float, i32 } @llvm.frexp.f32.i32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare { x86_fp80, i32 } @llvm.frexp.f80.i32(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare { fp128, i32 } @llvm.frexp.f128.i32(fp128) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare { double, i32 } @llvm.frexp.f64.i32(double) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare { float, i32 } @llvm.frexp.f32.i32(float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare { x86_fp80, i32 } @llvm.frexp.f80.i32(x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare { fp128, i32 } @llvm.frexp.f128.i32(fp128) [[READNONE_INTRINSIC2]]
__builtin_huge_val(); __builtin_huge_valf(); __builtin_huge_vall(); __builtin_huge_valf128();
@@ -165,10 +165,10 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
__builtin_ldexp(f,f); __builtin_ldexpf(f,f); __builtin_ldexpl(f,f); __builtin_ldexpf128(f,f);
-// NO__ERRNO: declare double @llvm.ldexp.f64.i32(double, i32) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.ldexp.f32.i32(float, i32) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.ldexp.f80.i32(x86_fp80, i32) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.ldexp.f128.i32(fp128, i32) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.ldexp.f64.i32(double, i32) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.ldexp.f32.i32(float, i32) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.ldexp.f80.i32(x86_fp80, i32) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.ldexp.f128.i32(fp128, i32) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @ldexp(double noundef, i32 noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @ldexpf(float noundef, i32 noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @ldexpl(x86_fp80 noundef, i32 noundef) [[NOT_READNONE]]
@@ -180,7 +180,7 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
// NO__ERRNO: declare { float, float } @llvm.modf.f32(float) [[READNONE_INTRINSIC]]
// NO__ERRNO: declare { x86_fp80, x86_fp80 } @llvm.modf.f80(x86_fp80) [[READNONE_INTRINSIC]]
// NO__ERRNO: declare fp128 @modff128(fp128 noundef, ptr noundef) [[NOT_READNONE:#[0-9]+]]
-// HAS_ERRNO: declare { double, double } @llvm.modf.f64(double) [[READNONE_INTRINSIC]]
+// HAS_ERRNO: declare { double, double } @llvm.modf.f64(double) [[READNONE_INTRINSIC:#[0-9]+]]
// HAS_ERRNO: declare { float, float } @llvm.modf.f32(float) [[READNONE_INTRINSIC]]
// HAS_ERRNO: declare { x86_fp80, x86_fp80 } @llvm.modf.f80(x86_fp80) [[READNONE_INTRINSIC]]
// HAS_ERRNO: declare fp128 @modff128(fp128 noundef, ptr noundef) [[NOT_READNONE]]
@@ -209,10 +209,10 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
__builtin_pow(f,f); __builtin_powf(f,f); __builtin_powl(f,f); __builtin_powf128(f,f);
-// NO__ERRNO: declare double @llvm.pow.f64(double, double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.pow.f32(float, float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.pow.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.pow.f128(fp128, fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.pow.f64(double, double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.pow.f32(float, float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.pow.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.pow.f128(fp128, fp128) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @pow(double noundef, double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @powf(float noundef, float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @powl(x86_fp80 noundef, x86_fp80 noundef) [[NOT_READNONE]]
@@ -220,12 +220,12 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
__builtin_powi(f,f); __builtin_powif(f,f); __builtin_powil(f,f);
-// NO__ERRNO: declare double @llvm.powi.f64.i32(double, i32) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.powi.f32.i32(float, i32) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.powi.f80.i32(x86_fp80, i32) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.powi.f64.i32(double, i32) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare float @llvm.powi.f32.i32(float, i32) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.powi.f80.i32(x86_fp80, i32) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.powi.f64.i32(double, i32) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.powi.f32.i32(float, i32) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.powi.f80.i32(x86_fp80, i32) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.powi.f64.i32(double, i32) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare float @llvm.powi.f32.i32(float, i32) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.powi.f80.i32(x86_fp80, i32) [[READNONE_INTRINSIC2]]
/* math */
__builtin_acos(f); __builtin_acosf(f); __builtin_acosl(f); __builtin_acosf128(f);
@@ -307,21 +307,21 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
__builtin_ceil(f); __builtin_ceilf(f); __builtin_ceill(f); __builtin_ceilf128(f);
-// NO__ERRNO: declare double @llvm.ceil.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.ceil.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.ceil.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.ceil.f128(fp128) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.ceil.f64(double) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare float @llvm.ceil.f32(float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.ceil.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare fp128 @llvm.ceil.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.ceil.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.ceil.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.ceil.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.ceil.f128(fp128) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.ceil.f64(double) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare float @llvm.ceil.f32(float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.ceil.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare fp128 @llvm.ceil.f128(fp128) [[READNONE_INTRINSIC2]]
__builtin_cos(f); __builtin_cosf(f); __builtin_cosl(f); __builtin_cosf128(f);
-// NO__ERRNO: declare double @llvm.cos.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.cos.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.cos.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.cos.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.cos.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.cos.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.cos.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.cos.f128(fp128) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @cos(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @cosf(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @cosl(x86_fp80 noundef) [[NOT_READNONE]]
@@ -362,10 +362,10 @@ __builtin_erfc(f); __builtin_erfcf(f); __builtin_erfcl(f); __builtin_
__builtin_exp(f); __builtin_expf(f); __builtin_expl(f); __builtin_expf128(f);
-// NO__ERRNO: declare double @llvm.exp.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.exp.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.exp.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.exp.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.exp.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.exp.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.exp.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.exp.f128(fp128) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @exp(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @expf(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @expl(x86_fp80 noundef) [[NOT_READNONE]]
@@ -373,10 +373,10 @@ __builtin_exp(f); __builtin_expf(f); __builtin_expl(f); __builtin_e
__builtin_exp2(f); __builtin_exp2f(f); __builtin_exp2l(f); __builtin_exp2f128(f);
-// NO__ERRNO: declare double @llvm.exp2.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.exp2.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.exp2.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.exp2.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.exp2.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.exp2.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.exp2.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.exp2.f128(fp128) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @exp2(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @exp2f(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @exp2l(x86_fp80 noundef) [[NOT_READNONE]]
@@ -384,10 +384,10 @@ __builtin_exp2(f); __builtin_exp2f(f); __builtin_exp2l(f); __builtin_
__builtin_exp10(f); __builtin_exp10f(f); __builtin_exp10l(f); __builtin_exp10f128(f);
-// NO__ERRNO: declare double @llvm.exp10.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.exp10.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.exp10.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.exp10.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.exp10.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.exp10.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.exp10.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.exp10.f128(fp128) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @exp10(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @exp10f(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @exp10l(x86_fp80 noundef) [[NOT_READNONE]]
@@ -417,22 +417,22 @@ __builtin_fdim(f,f); __builtin_fdimf(f,f); __builtin_fdiml(f,f); __bu
__builtin_floor(f); __builtin_floorf(f); __builtin_floorl(f); __builtin_floorf128(f);
-// NO__ERRNO: declare double @llvm.floor.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.floor.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.floor.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.floor.f128(fp128) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.floor.f64(double) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare float @llvm.floor.f32(float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.floor.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare fp128 @llvm.floor.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.floor.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.floor.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.floor.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.floor.f128(fp128) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.floor.f64(double) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare float @llvm.floor.f32(float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.floor.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare fp128 @llvm.floor.f128(fp128) [[READNONE_INTRINSIC2]]
__builtin_fma(f,f,f); __builtin_fmaf(f,f,f); __builtin_fmal(f,f,f); __builtin_fmaf128(f,f,f); __builtin_fmaf16(f,f,f);
-// NO__ERRNO: declare double @llvm.fma.f64(double, double, double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.fma.f32(float, float, float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.fma.f80(x86_fp80, x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.fma.f128(fp128, fp128, fp128) [[READNONE_INTRINSIC]]
-// NO__ERRONO: declare half @llvm.fma.f16(half, half, half) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.fma.f64(double, double, double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.fma.f32(float, float, float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.fma.f80(x86_fp80, x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.fma.f128(fp128, fp128, fp128) [[READNONE_INTRINSIC2]]
+// NO__ERRONO: declare half @llvm.fma.f16(half, half, half) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @fma(double noundef, double noundef, double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @fmaf(float noundef, float noundef, float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @fmal(x86_fp80 noundef, x86_fp80 noundef, x86_fp80 noundef) [[NOT_READNONE]]
@@ -454,25 +454,25 @@ __builtin_fma(f,f,f); __builtin_fmaf(f,f,f); __builtin_fmal(f,f,f);
__builtin_fmax(f,f); __builtin_fmaxf(f,f); __builtin_fmaxl(f,f); __builtin_fmaxf128(f,f);
-// NO__ERRNO: declare double @llvm.maxnum.f64(double, double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.maxnum.f32(float, float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.maxnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.maxnum.f128(fp128, fp128) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.maxnum.f64(double, double) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare float @llvm.maxnum.f32(float, float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.maxnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare fp128 @llvm.maxnum.f128(fp128, fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.maxnum.f64(double, double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.maxnum.f32(float, float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.maxnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.maxnum.f128(fp128, fp128) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.maxnum.f64(double, double) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare float @llvm.maxnum.f32(float, float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.maxnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare fp128 @llvm.maxnum.f128(fp128, fp128) [[READNONE_INTRINSIC2]]
__builtin_fmin(f,f); __builtin_fminf(f,f); __builtin_fminl(f,f); __builtin_fminf128(f,f);
-// NO__ERRNO: declare double @llvm.minnum.f64(double, double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.minnum.f32(float, float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.minnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.minnum.f128(fp128, fp128) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.minnum.f64(double, double) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare float @llvm.minnum.f32(float, float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.minnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare fp128 @llvm.minnum.f128(fp128, fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.minnum.f64(double, double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.minnum.f32(float, float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.minnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.minnum.f128(fp128, fp128) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.minnum.f64(double, double) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare float @llvm.minnum.f32(float, float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.minnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare fp128 @llvm.minnum.f128(fp128, fp128) [[READNONE_INTRINSIC2]]
__builtin_hypot(f,f); __builtin_hypotf(f,f); __builtin_hypotl(f,f); __builtin_hypotf128(f,f);
@@ -509,10 +509,10 @@ __builtin_lgamma(f); __builtin_lgammaf(f); __builtin_lgammal(f); __builti
__builtin_llrint(f); __builtin_llrintf(f); __builtin_llrintl(f); __builtin_llrintf128(f);
-// NO__ERRNO: declare i64 @llvm.llrint.i64.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.llrint.i64.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.llrint.i64.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.llrint.i64.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare i64 @llvm.llrint.i64.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.llrint.i64.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.llrint.i64.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.llrint.i64.f128(fp128) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare i64 @llrint(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare i64 @llrintf(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare i64 @llrintl(x86_fp80 noundef) [[NOT_READNONE]]
@@ -520,10 +520,10 @@ __builtin_llrint(f); __builtin_llrintf(f); __builtin_llrintl(f); __builti
__builtin_llround(f); __builtin_llroundf(f); __builtin_llroundl(f); __builtin_llroundf128(f);
-// NO__ERRNO: declare i64 @llvm.llround.i64.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.llround.i64.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.llround.i64.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.llround.i64.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare i64 @llvm.llround.i64.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.llround.i64.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.llround.i64.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.llround.i64.f128(fp128) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare i64 @llround(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare i64 @llroundf(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare i64 @llroundl(x86_fp80 noundef) [[NOT_READNONE]]
@@ -531,10 +531,10 @@ __builtin_llround(f); __builtin_llroundf(f); __builtin_llroundl(f); __built
__builtin_log(f); __builtin_logf(f); __builtin_logl(f); __builtin_logf128(f);
-// NO__ERRNO: declare double @llvm.log.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.log.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.log.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.log.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.log.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.log.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.log.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.log.f128(fp128) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @log(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @logf(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @logl(x86_fp80 noundef) [[NOT_READNONE]]
@@ -542,10 +542,10 @@ __builtin_log(f); __builtin_logf(f); __builtin_logl(f); __builtin_l
__builtin_log10(f); __builtin_log10f(f); __builtin_log10l(f); __builtin_log10f128(f);
-// NO__ERRNO: declare double @llvm.log10.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.log10.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.log10.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.log10.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.log10.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.log10.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.log10.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.log10.f128(fp128) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @log10(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @log10f(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @log10l(x86_fp80 noundef) [[NOT_READNONE]]
@@ -564,10 +564,10 @@ __builtin_log1p(f); __builtin_log1pf(f); __builtin_log1pl(f); __builtin
__builtin_log2(f); __builtin_log2f(f); __builtin_log2l(f); __builtin_log2f128(f);
-// NO__ERRNO: declare double @llvm.log2.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.log2.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.log2.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.log2.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.log2.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.log2.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.log2.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.log2.f128(fp128) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @log2(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @log2f(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @log2l(x86_fp80 noundef) [[NOT_READNONE]]
@@ -586,10 +586,10 @@ __builtin_logb(f); __builtin_logbf(f); __builtin_logbl(f); __builtin_
__builtin_lrint(f); __builtin_lrintf(f); __builtin_lrintl(f); __builtin_lrintf128(f);
-// NO__ERRNO: declare i64 @llvm.lrint.i64.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.lrint.i64.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.lrint.i64.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.lrint.i64.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare i64 @llvm.lrint.i64.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.lrint.i64.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.lrint.i64.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.lrint.i64.f128(fp128) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare i64 @lrint(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare i64 @lrintf(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare i64 @lrintl(x86_fp80 noundef) [[NOT_READNONE]]
@@ -597,10 +597,10 @@ __builtin_lrint(f); __builtin_lrintf(f); __builtin_lrintl(f); __builtin
__builtin_lround(f); __builtin_lroundf(f); __builtin_lroundl(f); __builtin_lroundf128(f);
-// NO__ERRNO: declare i64 @llvm.lround.i64.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.lround.i64.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.lround.i64.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.lround.i64.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare i64 @llvm.lround.i64.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.lround.i64.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.lround.i64.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.lround.i64.f128(fp128) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare i64 @lround(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare i64 @lroundf(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare i64 @lroundl(x86_fp80 noundef) [[NOT_READNONE]]
@@ -608,14 +608,14 @@ __builtin_lround(f); __builtin_lroundf(f); __builtin_lroundl(f); __built
__builtin_nearbyint(f); __builtin_nearbyintf(f); __builtin_nearbyintl(f); __builtin_nearbyintf128(f);
-// NO__ERRNO: declare double @llvm.nearbyint.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.nearbyint.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.nearbyint.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.nearbyint.f128(fp128) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.nearbyint.f64(double) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare float @llvm.nearbyint.f32(float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.nearbyint.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare fp128 @llvm.nearbyint.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.nearbyint.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.nearbyint.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.nearbyint.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.nearbyint.f128(fp128) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.nearbyint.f64(double) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare float @llvm.nearbyint.f32(float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.nearbyint.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare fp128 @llvm.nearbyint.f128(fp128) [[READNONE_INTRINSIC2]]
__builtin_nextafter(f,f); __builtin_nextafterf(f,f); __builtin_nextafterl(f,f); __builtin_nextafterf128(f,f);
@@ -663,25 +663,25 @@ __builtin_remquo(f,f,i); __builtin_remquof(f,f,i); __builtin_remquol(f,f,i); __
__builtin_rint(f); __builtin_rintf(f); __builtin_rintl(f); __builtin_rintf128(f);
-// NO__ERRNO: declare double @llvm.rint.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.rint.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.rint.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.rint.f128(fp128) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.rint.f64(double) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare float @llvm.rint.f32(float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.rint.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare fp128 @llvm.rint.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.rint.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.rint.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.rint.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.rint.f128(fp128) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.rint.f64(double) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare float @llvm.rint.f32(float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.rint.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare fp128 @llvm.rint.f128(fp128) [[READNONE_INTRINSIC2]]
__builtin_round(f); __builtin_roundf(f); __builtin_roundl(f); __builtin_roundf128(f);
-// NO__ERRNO: declare double @llvm.round.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.round.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.round.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.round.f128(fp128) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.round.f64(double) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare float @llvm.round.f32(float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.round.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare fp128 @llvm.round.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.round.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.round.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.round.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.round.f128(fp128) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.round.f64(double) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare float @llvm.round.f32(float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.round.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare fp128 @llvm.round.f128(fp128) [[READNONE_INTRINSIC2]]
__builtin_scalbln(f,f); __builtin_scalblnf(f,f); __builtin_scalblnl(f,f); __builtin_scalblnf128(f,f);
@@ -707,10 +707,10 @@ __builtin_scalbn(f,f); __builtin_scalbnf(f,f); __builtin_scalbnl(f,f); __
__builtin_sin(f); __builtin_sinf(f); __builtin_sinl(f); __builtin_sinf128(f);
-// NO__ERRNO: declare double @llvm.sin.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.sin.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.sin.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.sin.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.sin.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.sin.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.sin.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.sin.f128(fp128) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @sin(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @sinf(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @sinl(x86_fp80 noundef) [[NOT_READNONE]]
@@ -747,10 +747,10 @@ __builtin_sincospi(f,d,d); __builtin_sincospif(f,fp,fp); __builtin_sincospil(f,l
__builtin_sqrt(f); __builtin_sqrtf(f); __builtin_sqrtl(f); __builtin_sqrtf128(f);
-// NO__ERRNO: declare double @llvm.sqrt.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.sqrt.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.sqrt.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.sqrt.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.sqrt.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.sqrt.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.sqrt.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.sqrt.f128(fp128) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @sqrt(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @sqrtf(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @sqrtl(x86_fp80 noundef) [[NOT_READNONE]]
@@ -791,22 +791,24 @@ __builtin_tgamma(f); __builtin_tgammaf(f); __builtin_tgammal(f); __builti
__builtin_trunc(f); __builtin_truncf(f); __builtin_truncl(f); __builtin_truncf128(f);
-// NO__ERRNO: declare double @llvm.trunc.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.trunc.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.trunc.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare fp128 @llvm.trunc.f128(fp128) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.trunc.f64(double) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare float @llvm.trunc.f32(float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.trunc.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare fp128 @llvm.trunc.f128(fp128) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.trunc.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.trunc.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.trunc.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare fp128 @llvm.trunc.f128(fp128) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.trunc.f64(double) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare float @llvm.trunc.f32(float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.trunc.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare fp128 @llvm.trunc.f128(fp128) [[READNONE_INTRINSIC2]]
};
// NO__ERRNO: attributes [[READNONE_INTRINSIC]] = { {{.*}}memory(none){{.*}} }
+// NO__ERRNO: attributes [[READNONE_INTRINSIC2]] = { {{.*}}memory(none){{.*}} }
// NO__ERRNO: attributes [[NOT_READNONE]] = { nounwind {{.*}} }
// NO__ERRNO: attributes [[PURE]] = { {{.*}}memory(read){{.*}} }
// NO__ERRNO: attributes [[READNONE]] = { {{.*}}memory(none){{.*}} }
// HAS_ERRNO: attributes [[NOT_READNONE]] = { nounwind {{.*}} }
+// HAS_ERRNO: attributes [[READNONE_INTRINSIC2]] = { {{.*}}memory(none){{.*}} }
// HAS_ERRNO: attributes [[READNONE_INTRINSIC]] = { {{.*}}memory(none){{.*}} }
// HAS_ERRNO: attributes [[PURE]] = { {{.*}}memory(read){{.*}} }
// HAS_ERRNO: attributes [[READNONE]] = { {{.*}}memory(none){{.*}} }
diff --git a/clang/test/CodeGen/builtin-sqrt.c b/clang/test/CodeGen/builtin-sqrt.c
index 2313a68..3ebf2ac 100644
--- a/clang/test/CodeGen/builtin-sqrt.c
+++ b/clang/test/CodeGen/builtin-sqrt.c
@@ -11,5 +11,5 @@ float foo(float X) {
// HAS_ERRNO-NOT: attributes [[ATTR]] = {{{.*}} memory(none)
// NO_ERRNO: declare float @llvm.sqrt.f32(float) [[ATTR:#[0-9]+]]
-// NO_ERRNO: attributes [[ATTR]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
+// NO_ERRNO: attributes [[ATTR]] = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) }
diff --git a/clang/test/CodeGen/libcalls.c b/clang/test/CodeGen/libcalls.c
index 1e4b06e..923719f 100644
--- a/clang/test/CodeGen/libcalls.c
+++ b/clang/test/CodeGen/libcalls.c
@@ -74,9 +74,9 @@ void test_fma(float a0, double a1, long double a2) {
// CHECK-YES: declare float @fmaf(float noundef, float noundef, float noundef)
// CHECK-YES: declare double @fma(double noundef, double noundef, double noundef)
// CHECK-YES: declare x86_fp80 @fmal(x86_fp80 noundef, x86_fp80 noundef, x86_fp80 noundef)
-// CHECK-NO: declare float @llvm.fma.f32(float, float, float) [[NUW_RN2:#[0-9]+]]
-// CHECK-NO: declare double @llvm.fma.f64(double, double, double) [[NUW_RN2]]
-// CHECK-NO: declare x86_fp80 @llvm.fma.f80(x86_fp80, x86_fp80, x86_fp80) [[NUW_RN2]]
+// CHECK-NO: declare float @llvm.fma.f32(float, float, float) [[NUW_RNI]]
+// CHECK-NO: declare double @llvm.fma.f64(double, double, double) [[NUW_RNI]]
+// CHECK-NO: declare x86_fp80 @llvm.fma.f80(x86_fp80, x86_fp80, x86_fp80) [[NUW_RNI]]
// Just checking to make sure these library functions are marked readnone
void test_builtins(double d, float f, long double ld) {
@@ -85,9 +85,9 @@ void test_builtins(double d, float f, long double ld) {
double atan_ = atan(d);
long double atanl_ = atanl(ld);
float atanf_ = atanf(f);
-// CHECK-NO: declare double @llvm.atan.f64(double) [[NUW_RNI:#[0-9]+]]
-// CHECK-NO: declare x86_fp80 @llvm.atan.f80(x86_fp80) [[NUW_RNI]]
-// CHECK-NO: declare float @llvm.atan.f32(float) [[NUW_RNI]]
+// CHECK-NO: declare double @llvm.atan.f64(double) [[NUW_RN2:#[0-9]+]]
+// CHECK-NO: declare x86_fp80 @llvm.atan.f80(x86_fp80) [[NUW_RN2]]
+// CHECK-NO: declare float @llvm.atan.f32(float) [[NUW_RN2]]
// CHECK-YES: declare double @atan(double noundef) [[NUW:#[0-9]+]]
// CHECK-YES: declare x86_fp80 @atanl(x86_fp80 noundef) [[NUW]]
// CHECK-YES: declare float @atanf(float noundef) [[NUW]]
@@ -95,9 +95,9 @@ void test_builtins(double d, float f, long double ld) {
double atan2_ = atan2(d, 2);
long double atan2l_ = atan2l(ld, ld);
float atan2f_ = atan2f(f, f);
-// CHECK-NO: declare double @llvm.atan2.f64(double, double) [[NUW_RNI]]
-// CHECK-NO: declare x86_fp80 @llvm.atan2.f80(x86_fp80, x86_fp80) [[NUW_RNI]]
-// CHECK-NO: declare float @llvm.atan2.f32(float, float) [[NUW_RNI]]
+// CHECK-NO: declare double @llvm.atan2.f64(double, double) [[NUW_RN2]]
+// CHECK-NO: declare x86_fp80 @llvm.atan2.f80(x86_fp80, x86_fp80) [[NUW_RN2]]
+// CHECK-NO: declare float @llvm.atan2.f32(float, float) [[NUW_RN2]]
// CHECK-YES: declare double @atan2(double noundef, double noundef) [[NUW]]
// CHECK-YES: declare x86_fp80 @atan2l(x86_fp80 noundef, x86_fp80 noundef) [[NUW]]
// CHECK-YES: declare float @atan2f(float noundef, float noundef) [[NUW]]
@@ -124,4 +124,4 @@ void test_builtins(double d, float f, long double ld) {
}
// CHECK-YES: attributes [[NUW]] = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+cx8,+x87" }
-// CHECK-NO-DAG: attributes [[NUW_RNI]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
+// CHECK-NO-DAG: attributes [[NUW_RNI]] = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) }
diff --git a/clang/test/CodeGen/math-libcalls.c b/clang/test/CodeGen/math-libcalls.c
index ad29782..d4cd6f86 100644
--- a/clang/test/CodeGen/math-libcalls.c
+++ b/clang/test/CodeGen/math-libcalls.c
@@ -35,27 +35,27 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
copysign(f,f); copysignf(f,f);copysignl(f,f);
- // NO__ERRNO: declare double @llvm.copysign.f64(double, double) [[READNONE_INTRINSIC]]
- // NO__ERRNO: declare float @llvm.copysign.f32(float, float) [[READNONE_INTRINSIC]]
- // NO__ERRNO: declare x86_fp80 @llvm.copysign.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
- // HAS_ERRNO: declare double @llvm.copysign.f64(double, double) [[READNONE_INTRINSIC:#[0-9]+]]
- // HAS_ERRNO: declare float @llvm.copysign.f32(float, float) [[READNONE_INTRINSIC]]
- // HAS_ERRNO: declare x86_fp80 @llvm.copysign.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
- // HAS_MAYTRAP: declare double @llvm.copysign.f64(double, double) [[READNONE_INTRINSIC:#[0-9]+]]
- // HAS_MAYTRAP: declare float @llvm.copysign.f32(float, float) [[READNONE_INTRINSIC]]
- // HAS_MAYTRAP: declare x86_fp80 @llvm.copysign.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
+ // NO__ERRNO: declare double @llvm.copysign.f64(double, double) [[READNONE_INTRINSIC2:#[0-9]+]]
+ // NO__ERRNO: declare float @llvm.copysign.f32(float, float) [[READNONE_INTRINSIC2]]
+ // NO__ERRNO: declare x86_fp80 @llvm.copysign.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
+ // HAS_ERRNO: declare double @llvm.copysign.f64(double, double) [[READNONE_INTRINSIC2:#[0-9]+]]
+ // HAS_ERRNO: declare float @llvm.copysign.f32(float, float) [[READNONE_INTRINSIC2]]
+ // HAS_ERRNO: declare x86_fp80 @llvm.copysign.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
+ // HAS_MAYTRAP: declare double @llvm.copysign.f64(double, double) [[READNONE_INTRINSIC2:#[0-9]+]]
+ // HAS_MAYTRAP: declare float @llvm.copysign.f32(float, float) [[READNONE_INTRINSIC2]]
+ // HAS_MAYTRAP: declare x86_fp80 @llvm.copysign.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
fabs(f); fabsf(f); fabsl(f);
- // NO__ERRNO: declare double @llvm.fabs.f64(double) [[READNONE_INTRINSIC]]
- // NO__ERRNO: declare float @llvm.fabs.f32(float) [[READNONE_INTRINSIC]]
- // NO__ERRNO: declare x86_fp80 @llvm.fabs.f80(x86_fp80) [[READNONE_INTRINSIC]]
- // HAS_ERRNO: declare double @llvm.fabs.f64(double) [[READNONE_INTRINSIC]]
- // HAS_ERRNO: declare float @llvm.fabs.f32(float) [[READNONE_INTRINSIC]]
- // HAS_ERRNO: declare x86_fp80 @llvm.fabs.f80(x86_fp80) [[READNONE_INTRINSIC]]
- // HAS_MAYTRAP: declare double @llvm.fabs.f64(double) [[READNONE_INTRINSIC]]
- // HAS_MAYTRAP: declare float @llvm.fabs.f32(float) [[READNONE_INTRINSIC]]
- // HAS_MAYTRAP: declare x86_fp80 @llvm.fabs.f80(x86_fp80) [[READNONE_INTRINSIC]]
+ // NO__ERRNO: declare double @llvm.fabs.f64(double) [[READNONE_INTRINSIC2]]
+ // NO__ERRNO: declare float @llvm.fabs.f32(float) [[READNONE_INTRINSIC2]]
+ // NO__ERRNO: declare x86_fp80 @llvm.fabs.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+ // HAS_ERRNO: declare double @llvm.fabs.f64(double) [[READNONE_INTRINSIC2]]
+ // HAS_ERRNO: declare float @llvm.fabs.f32(float) [[READNONE_INTRINSIC2]]
+ // HAS_ERRNO: declare x86_fp80 @llvm.fabs.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+ // HAS_MAYTRAP: declare double @llvm.fabs.f64(double) [[READNONE_INTRINSIC2]]
+ // HAS_MAYTRAP: declare float @llvm.fabs.f32(float) [[READNONE_INTRINSIC2]]
+ // HAS_MAYTRAP: declare x86_fp80 @llvm.fabs.f80(x86_fp80) [[READNONE_INTRINSIC2]]
frexp(f,i); frexpf(f,i); frexpl(f,i);
@@ -86,7 +86,7 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
// NO__ERRNO: declare { double, double } @llvm.modf.f64(double) [[READNONE_INTRINSIC]]
// NO__ERRNO: declare { float, float } @llvm.modf.f32(float) [[READNONE_INTRINSIC]]
// NO__ERRNO: declare { x86_fp80, x86_fp80 } @llvm.modf.f80(x86_fp80) [[READNONE_INTRINSIC]]
- // HAS_ERRNO: declare { double, double } @llvm.modf.f64(double) [[READNONE_INTRINSIC]]
+ // HAS_ERRNO: declare { double, double } @llvm.modf.f64(double) [[READNONE_INTRINSIC:#[0-9]+]]
// HAS_ERRNO: declare { float, float } @llvm.modf.f32(float) [[READNONE_INTRINSIC]]
// HAS_ERRNO: declare { x86_fp80, x86_fp80 } @llvm.modf.f80(x86_fp80) [[READNONE_INTRINSIC]]
// HAS_MAYTRAP: declare double @modf(double noundef, ptr noundef) [[NOT_READNONE]]
@@ -107,9 +107,9 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
pow(f,f); powf(f,f); powl(f,f);
-// NO__ERRNO: declare double @llvm.pow.f64(double, double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.pow.f32(float, float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.pow.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.pow.f64(double, double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.pow.f32(float, float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.pow.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @pow(double noundef, double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @powf(float noundef, float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @powl(x86_fp80 noundef, x86_fp80 noundef) [[NOT_READNONE]]
@@ -206,21 +206,21 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
ceil(f); ceilf(f); ceill(f);
-// NO__ERRNO: declare double @llvm.ceil.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.ceil.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.ceil.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.ceil.f64(double) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare float @llvm.ceil.f32(float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.ceil.f80(x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.ceil.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.ceil.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.ceil.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.ceil.f64(double) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare float @llvm.ceil.f32(float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.ceil.f80(x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_MAYTRAP: declare double @llvm.experimental.constrained.ceil.f64(
// HAS_MAYTRAP: declare float @llvm.experimental.constrained.ceil.f32(
// HAS_MAYTRAP: declare x86_fp80 @llvm.experimental.constrained.ceil.f80(
cos(f); cosf(f); cosl(f);
-// NO__ERRNO: declare double @llvm.cos.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.cos.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.cos.f80(x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.cos.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.cos.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.cos.f80(x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @cos(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @cosf(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @cosl(x86_fp80 noundef) [[NOT_READNONE]]
@@ -266,9 +266,9 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
exp(f); expf(f); expl(f);
-// NO__ERRNO: declare double @llvm.exp.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.exp.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.exp.f80(x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.exp.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.exp.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.exp.f80(x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @exp(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @expf(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @expl(x86_fp80 noundef) [[NOT_READNONE]]
@@ -278,9 +278,9 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
exp2(f); exp2f(f); exp2l(f);
-// NO__ERRNO: declare double @llvm.exp2.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.exp2.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.exp2.f80(x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.exp2.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.exp2.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.exp2.f80(x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @exp2(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @exp2f(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @exp2l(x86_fp80 noundef) [[NOT_READNONE]]
@@ -314,21 +314,21 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
floor(f); floorf(f); floorl(f);
-// NO__ERRNO: declare double @llvm.floor.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.floor.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.floor.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.floor.f64(double) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare float @llvm.floor.f32(float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.floor.f80(x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.floor.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.floor.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.floor.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.floor.f64(double) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare float @llvm.floor.f32(float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.floor.f80(x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_MAYTRAP: declare double @llvm.experimental.constrained.floor.f64
// HAS_MAYTRAP: declare float @llvm.experimental.constrained.floor.f32(
// HAS_MAYTRAP: declare x86_fp80 @llvm.experimental.constrained.floor.f80(
fma(f,f,f); fmaf(f,f,f); fmal(f,f,f);
-// NO__ERRNO: declare double @llvm.fma.f64(double, double, double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.fma.f32(float, float, float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.fma.f80(x86_fp80, x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.fma.f64(double, double, double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.fma.f32(float, float, float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.fma.f80(x86_fp80, x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @fma(double noundef, double noundef, double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @fmaf(float noundef, float noundef, float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @fmal(x86_fp80 noundef, x86_fp80 noundef, x86_fp80 noundef) [[NOT_READNONE]]
@@ -350,39 +350,39 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
fmax(f,f); fmaxf(f,f); fmaxl(f,f);
-// NO__ERRNO: declare double @llvm.maxnum.f64(double, double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.maxnum.f32(float, float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.maxnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.maxnum.f64(double, double) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare float @llvm.maxnum.f32(float, float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.maxnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.maxnum.f64(double, double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.maxnum.f32(float, float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.maxnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.maxnum.f64(double, double) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare float @llvm.maxnum.f32(float, float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.maxnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_MAYTRAP: declare double @llvm.experimental.constrained.maxnum.f64(
// HAS_MAYTRAP: declare float @llvm.experimental.constrained.maxnum.f32(
// HAS_MAYTRAP: declare x86_fp80 @llvm.experimental.constrained.maxnum.f80(
fmin(f,f); fminf(f,f); fminl(f,f);
-// NO__ERRNO: declare double @llvm.minnum.f64(double, double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.minnum.f32(float, float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.minnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.minnum.f64(double, double) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare float @llvm.minnum.f32(float, float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.minnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.minnum.f64(double, double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.minnum.f32(float, float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.minnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.minnum.f64(double, double) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare float @llvm.minnum.f32(float, float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.minnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_MAYTRAP: declare double @llvm.experimental.constrained.minnum.f64(
// HAS_MAYTRAP: declare float @llvm.experimental.constrained.minnum.f32(
// HAS_MAYTRAP: declare x86_fp80 @llvm.experimental.constrained.minnum.f80(
fmaximum_num(*d,*d); fmaximum_numf(f,f); fmaximum_numl(*l,*l);
-// COMMON: declare double @llvm.maximumnum.f64(double, double) [[READNONE_INTRINSIC]]
-// COMMON: declare float @llvm.maximumnum.f32(float, float) [[READNONE_INTRINSIC]]
-// COMMON: declare x86_fp80 @llvm.maximumnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
+// COMMON: declare double @llvm.maximumnum.f64(double, double) [[READNONE_INTRINSIC2]]
+// COMMON: declare float @llvm.maximumnum.f32(float, float) [[READNONE_INTRINSIC2]]
+// COMMON: declare x86_fp80 @llvm.maximumnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
fminimum_num(*d,*d); fminimum_numf(f,f); fminimum_numl(*l,*l);
-// COMMON: declare double @llvm.minimumnum.f64(double, double) [[READNONE_INTRINSIC]]
-// COMMON: declare float @llvm.minimumnum.f32(float, float) [[READNONE_INTRINSIC]]
-// COMMON: declare x86_fp80 @llvm.minimumnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC]]
+// COMMON: declare double @llvm.minimumnum.f64(double, double) [[READNONE_INTRINSIC2]]
+// COMMON: declare float @llvm.minimumnum.f32(float, float) [[READNONE_INTRINSIC2]]
+// COMMON: declare x86_fp80 @llvm.minimumnum.f80(x86_fp80, x86_fp80) [[READNONE_INTRINSIC2]]
hypot(f,f); hypotf(f,f); hypotl(f,f);
@@ -422,9 +422,9 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
llrint(f); llrintf(f); llrintl(f);
-// NO__ERRNO: declare i64 @llvm.llrint.i64.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.llrint.i64.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.llrint.i64.f80(x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare i64 @llvm.llrint.i64.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.llrint.i64.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.llrint.i64.f80(x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare i64 @llrint(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare i64 @llrintf(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare i64 @llrintl(x86_fp80 noundef) [[NOT_READNONE]]
@@ -434,9 +434,9 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
llround(f); llroundf(f); llroundl(f);
-// NO__ERRNO: declare i64 @llvm.llround.i64.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.llround.i64.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.llround.i64.f80(x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare i64 @llvm.llround.i64.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.llround.i64.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.llround.i64.f80(x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare i64 @llround(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare i64 @llroundf(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare i64 @llroundl(x86_fp80 noundef) [[NOT_READNONE]]
@@ -446,9 +446,9 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
log(f); logf(f); logl(f);
-// NO__ERRNO: declare double @llvm.log.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.log.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.log.f80(x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.log.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.log.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.log.f80(x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @log(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @logf(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @logl(x86_fp80 noundef) [[NOT_READNONE]]
@@ -458,9 +458,9 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
log10(f); log10f(f); log10l(f);
-// NO__ERRNO: declare double @llvm.log10.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.log10.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.log10.f80(x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.log10.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.log10.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.log10.f80(x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @log10(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @log10f(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @log10l(x86_fp80 noundef) [[NOT_READNONE]]
@@ -482,9 +482,9 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
log2(f); log2f(f); log2l(f);
-// NO__ERRNO: declare double @llvm.log2.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.log2.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.log2.f80(x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.log2.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.log2.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.log2.f80(x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @log2(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @log2f(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @log2l(x86_fp80 noundef) [[NOT_READNONE]]
@@ -506,9 +506,9 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
lrint(f); lrintf(f); lrintl(f);
-// NO__ERRNO: declare i64 @llvm.lrint.i64.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.lrint.i64.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.lrint.i64.f80(x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare i64 @llvm.lrint.i64.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.lrint.i64.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.lrint.i64.f80(x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare i64 @lrint(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare i64 @lrintf(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare i64 @lrintl(x86_fp80 noundef) [[NOT_READNONE]]
@@ -518,9 +518,9 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
lround(f); lroundf(f); lroundl(f);
-// NO__ERRNO: declare i64 @llvm.lround.i64.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.lround.i64.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare i64 @llvm.lround.i64.f80(x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare i64 @llvm.lround.i64.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.lround.i64.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare i64 @llvm.lround.i64.f80(x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare i64 @lround(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare i64 @lroundf(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare i64 @lroundl(x86_fp80 noundef) [[NOT_READNONE]]
@@ -530,12 +530,12 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
nearbyint(f); nearbyintf(f); nearbyintl(f);
-// NO__ERRNO: declare double @llvm.nearbyint.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.nearbyint.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.nearbyint.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.nearbyint.f64(double) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare float @llvm.nearbyint.f32(float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.nearbyint.f80(x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.nearbyint.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.nearbyint.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.nearbyint.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.nearbyint.f64(double) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare float @llvm.nearbyint.f32(float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.nearbyint.f80(x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_MAYTRAP: declare double @llvm.experimental.constrained.nearbyint.f64(
// HAS_MAYTRAP: declare float @llvm.experimental.constrained.nearbyint.f32(
// HAS_MAYTRAP: declare x86_fp80 @llvm.experimental.constrained.nearbyint.f80(
@@ -590,24 +590,24 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
rint(f); rintf(f); rintl(f);
-// NO__ERRNO: declare double @llvm.rint.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.rint.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.rint.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.rint.f64(double) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare float @llvm.rint.f32(float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.rint.f80(x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.rint.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.rint.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.rint.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.rint.f64(double) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare float @llvm.rint.f32(float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.rint.f80(x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_MAYTRAP: declare double @llvm.experimental.constrained.rint.f64(
// HAS_MAYTRAP: declare float @llvm.experimental.constrained.rint.f32(
// HAS_MAYTRAP: declare x86_fp80 @llvm.experimental.constrained.rint.f80(
round(f); roundf(f); roundl(f);
-// NO__ERRNO: declare double @llvm.round.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.round.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.round.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.round.f64(double) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare float @llvm.round.f32(float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.round.f80(x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.round.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.round.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.round.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.round.f64(double) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare float @llvm.round.f32(float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.round.f80(x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_MAYTRAP: declare double @llvm.experimental.constrained.round.f64(
// HAS_MAYTRAP: declare float @llvm.experimental.constrained.round.f32(
// HAS_MAYTRAP: declare x86_fp80 @llvm.experimental.constrained.round.f80(
@@ -638,9 +638,9 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
sin(f); sinf(f); sinl(f);
-// NO__ERRNO: declare double @llvm.sin.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.sin.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.sin.f80(x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.sin.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.sin.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.sin.f80(x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @sin(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @sinf(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @sinl(x86_fp80 noundef) [[NOT_READNONE]]
@@ -674,9 +674,9 @@ sincos(f, d, d); sincosf(f, fp, fp); sincosl(f, l, l);
sqrt(f); sqrtf(f); sqrtl(f);
-// NO__ERRNO: declare double @llvm.sqrt.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.sqrt.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.sqrt.f80(x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.sqrt.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.sqrt.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.sqrt.f80(x86_fp80) [[READNONE_INTRINSIC2]]
// HAS_ERRNO: declare double @sqrt(double noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare float @sqrtf(float noundef) [[NOT_READNONE]]
// HAS_ERRNO: declare x86_fp80 @sqrtl(x86_fp80 noundef) [[NOT_READNONE]]
@@ -722,20 +722,22 @@ sincos(f, d, d); sincosf(f, fp, fp); sincosl(f, l, l);
trunc(f); truncf(f); truncl(f);
-// NO__ERRNO: declare double @llvm.trunc.f64(double) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare float @llvm.trunc.f32(float) [[READNONE_INTRINSIC]]
-// NO__ERRNO: declare x86_fp80 @llvm.trunc.f80(x86_fp80) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare double @llvm.trunc.f64(double) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare float @llvm.trunc.f32(float) [[READNONE_INTRINSIC]]
-// HAS_ERRNO: declare x86_fp80 @llvm.trunc.f80(x86_fp80) [[READNONE_INTRINSIC]]
+// NO__ERRNO: declare double @llvm.trunc.f64(double) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare float @llvm.trunc.f32(float) [[READNONE_INTRINSIC2]]
+// NO__ERRNO: declare x86_fp80 @llvm.trunc.f80(x86_fp80) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare double @llvm.trunc.f64(double) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare float @llvm.trunc.f32(float) [[READNONE_INTRINSIC2]]
+// HAS_ERRNO: declare x86_fp80 @llvm.trunc.f80(x86_fp80) [[READNONE_INTRINSIC2]]
};
// NO__ERRNO: attributes [[READNONE_INTRINSIC]] = { {{.*}}memory(none){{.*}} }
+// NO__ERRNO: attributes [[READNONE_INTRINSIC2]] = { {{.*}}memory(none){{.*}} }
// NO__ERRNO: attributes [[NOT_READNONE]] = { nounwind {{.*}} }
// NO__ERRNO: attributes [[READNONE]] = { {{.*}}memory(none){{.*}} }
// NO__ERRNO: attributes [[READONLY]] = { {{.*}}memory(read){{.*}} }
// HAS_ERRNO: attributes [[NOT_READNONE]] = { nounwind {{.*}} }
+// HAS_ERRNO: attributes [[READNONE_INTRINSIC2]] = { {{.*}}memory(none){{.*}} }
// HAS_ERRNO: attributes [[READNONE_INTRINSIC]] = { {{.*}}memory(none){{.*}} }
// HAS_ERRNO: attributes [[READONLY]] = { {{.*}}memory(read){{.*}} }
// HAS_ERRNO: attributes [[READNONE]] = { {{.*}}memory(none){{.*}} }
diff --git a/clang/test/CodeGenOpenCL/cl20-device-side-enqueue-attributes.cl b/clang/test/CodeGenOpenCL/cl20-device-side-enqueue-attributes.cl
index ea1f734..5cbf645 100644
--- a/clang/test/CodeGenOpenCL/cl20-device-side-enqueue-attributes.cl
+++ b/clang/test/CodeGenOpenCL/cl20-device-side-enqueue-attributes.cl
@@ -199,7 +199,7 @@ kernel void device_side_enqueue(global float *a, global float *b, int i) {
// SPIR32: attributes #[[ATTR0]] = { convergent noinline norecurse nounwind optnone "denormal-fp-math-f32"="preserve-sign,preserve-sign" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "uniform-work-group-size"="true" }
// SPIR32: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
// SPIR32: attributes #[[ATTR2]] = { convergent noinline nounwind optnone "denormal-fp-math-f32"="preserve-sign,preserve-sign" "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
-// SPIR32: attributes #[[ATTR3:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
+// SPIR32: attributes #[[ATTR3:[0-9]+]] = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) }
// SPIR32: attributes #[[ATTR4]] = { convergent nounwind "denormal-fp-math-f32"="preserve-sign,preserve-sign" "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
// SPIR32: attributes #[[ATTR5]] = { convergent nounwind "uniform-work-group-size"="true" }
//.
diff --git a/clang/test/DebugInfo/KeyInstructions/flag.cpp b/clang/test/DebugInfo/KeyInstructions/flag.cpp
index 6aeeed6..4a4a5c4 100644
--- a/clang/test/DebugInfo/KeyInstructions/flag.cpp
+++ b/clang/test/DebugInfo/KeyInstructions/flag.cpp
@@ -8,6 +8,9 @@
// KEY-INSTRUCTIONS: "-gkey-instructions"
// NO-KEY-INSTRUCTIONS-NOT: key-instructions
+
+// Only expect one dwarf related flag.
+// NO-DEBUG: -fdwarf2-cfi-asm
// NO-DEBUG-NOT: debug-info-kind
// NO-DEBUG-NOT: dwarf
diff --git a/clang/test/Frontend/diags-interesting-source-region-colors.cpp b/clang/test/Frontend/diags-interesting-source-region-colors.cpp
new file mode 100644
index 0000000..80db087
--- /dev/null
+++ b/clang/test/Frontend/diags-interesting-source-region-colors.cpp
@@ -0,0 +1,30 @@
+// RUN: not %clang_cc1 %s -fmessage-length=40 -fcolor-diagnostics -fno-show-source-location -Wunused-value -o - 2>&1 | FileCheck %s
+
+// REQUIRES: ansi-escape-sequences
+
+int main() {
+ 1 + + if;
+ // CHECK: expected expression
+ // CHECK-NEXT: ...+ [[MAGENTA:.\[0;34m]]if[[RESET:.\[0m]];
+
+ /*😂*/1 + + if;
+ // CHECK: expected expression
+ // CHECK-NEXT: ...+ [[MAGENTA:.\[0;34m]]if[[RESET:.\[0m]];
+
+ a + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1;
+ // CHECK: use of undeclared identifier
+ // CHECK-NEXT: a + [[GREEN:.\[0;32m]]1[[RESET]] + [[GREEN]]1[[RESET]] + [[GREEN]]1[[RESET]] + [[GREEN]]1[[RESET]] + [[GREEN]]1[[RESET]] ...
+
+
+ /*😂😂😂*/ a + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1;
+ // CHECK: use of undeclared identifier
+ // CHECK-NEXT: [[YELLOW:.\[0;33m]]/*😂😂😂*/[[RESET]] a + [[GREEN:.\[0;32m]]1[[RESET]] + [[GREEN]]1[[RESET]] ...
+
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
+ // CHECK: [[GREEN:.\[0;32m]]"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"[[RESET]];
+
+ "😂xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
+ // CHECK: [[GREEN:.\[0;32m]]"😂xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"[[RESET]];
+}
+
+
diff --git a/clang/test/Modules/Inputs/builtin-headers/system-modules.modulemap b/clang/test/Modules/Inputs/builtin-headers/system-modules.modulemap
index 1869651..8ab6ae47 100644
--- a/clang/test/Modules/Inputs/builtin-headers/system-modules.modulemap
+++ b/clang/test/Modules/Inputs/builtin-headers/system-modules.modulemap
@@ -49,6 +49,11 @@ module cstd [system] [no_undeclared_includes] {
export *
}
+ module stdckdint {
+ header "stdckdint.h"
+ export *
+ }
+
module stdcountof {
header "stdcountof.h"
export *
diff --git a/clang/test/Modules/builtin-headers.mm b/clang/test/Modules/builtin-headers.mm
index ad2d66a..6cd3662 100644
--- a/clang/test/Modules/builtin-headers.mm
+++ b/clang/test/Modules/builtin-headers.mm
@@ -17,6 +17,7 @@
@import _Builtin_stdarg;
@import _Builtin_stdatomic;
@import _Builtin_stdbool;
+@import _Builtin_stdckdint;
@import _Builtin_stdcountof;
@import _Builtin_stddef;
@import _Builtin_stdint;
diff --git a/clang/test/Modules/crash-enum-visibility-with-header-unit.cppm b/clang/test/Modules/crash-enum-visibility-with-header-unit.cppm
new file mode 100644
index 0000000..90c5779
--- /dev/null
+++ b/clang/test/Modules/crash-enum-visibility-with-header-unit.cppm
@@ -0,0 +1,46 @@
+// Fixes #165445
+
+// RUN: rm -rf %t
+// RUN: mkdir -p %t
+// RUN: split-file %s %t
+//
+// RUN: %clang_cc1 -std=c++20 -x c++-user-header %t/header.h \
+// RUN: -emit-header-unit -o %t/header.pcm
+//
+// RUN: %clang_cc1 -std=c++20 %t/A.cppm -fmodule-file=%t/header.pcm \
+// RUN: -emit-module-interface -o %t/A.pcm
+//
+// RUN: %clang_cc1 -std=c++20 %t/B.cppm -fmodule-file=%t/header.pcm \
+// RUN: -emit-module-interface -o %t/B.pcm
+//
+// RUN: %clang_cc1 -std=c++20 %t/use.cpp \
+// RUN: -fmodule-file=A=%t/A.pcm -fmodule-file=B=%t/B.pcm \
+// RUN: -fmodule-file=%t/header.pcm \
+// RUN: -verify -fsyntax-only
+
+//--- enum.h
+enum E { Value };
+
+//--- header.h
+#include "enum.h"
+
+//--- A.cppm
+module;
+#include "enum.h"
+export module A;
+
+auto e = Value;
+
+//--- B.cppm
+export module B;
+import "header.h";
+
+auto e = Value;
+
+//--- use.cpp
+// expected-no-diagnostics
+import A;
+import B;
+#include "enum.h"
+
+auto e = Value;
diff --git a/clang/test/Preprocessor/unwind-tables.c b/clang/test/Preprocessor/unwind-tables.c
index 0a863d7..5ff990d 100644
--- a/clang/test/Preprocessor/unwind-tables.c
+++ b/clang/test/Preprocessor/unwind-tables.c
@@ -1,11 +1,13 @@
// RUN: %clang %s -dM -E -target x86_64-windows | FileCheck %s --check-prefix=NO
// RUN: %clang %s -dM -E -target x86_64 -fno-asynchronous-unwind-tables | FileCheck %s --check-prefix=NO
+// RUN: %clang %s -dM -E -target x86_64 -fno-dwarf2-cfi-asm | FileCheck %s --check-prefix=NO
// RUN: %clang %s -dM -E -target x86_64 | FileCheck %s
// RUN: %clang %s -dM -E -target x86_64 -funwind-tables -fno-asynchronous-unwind-tables -g | FileCheck %s
// RUN: %clang %s -dM -E -target aarch64-apple-darwin | FileCheck %s
// RUN: %clang %s -dM -E -target x86_64 -fno-asynchronous-unwind-tables -g | FileCheck %s
// RUN: %clang %s -dM -E -target x86_64 -fno-asynchronous-unwind-tables -fexceptions | FileCheck %s
+// RUN: %clang %s -dM -E -target x86_64-windows -fdwarf2-cfi-asm | FileCheck %s
// NO-NOT: #define __GCC_HAVE_DWARF2_CFI_ASM
// CHECK: #define __GCC_HAVE_DWARF2_CFI_ASM 1
diff --git a/clang/test/Sema/attr-nonblocking-constraints.cpp b/clang/test/Sema/attr-nonblocking-constraints.cpp
index b26a945..881e816 100644
--- a/clang/test/Sema/attr-nonblocking-constraints.cpp
+++ b/clang/test/Sema/attr-nonblocking-constraints.cpp
@@ -235,16 +235,35 @@ void nb13() [[clang::nonblocking]] { nb12(); }
// C++ member function pointers
struct PTMFTester {
typedef void (PTMFTester::*ConvertFunction)() [[clang::nonblocking]];
-
- void convert() [[clang::nonblocking]];
+ typedef void (PTMFTester::*BlockingFunction)();
ConvertFunction mConvertFunc;
-};
-void PTMFTester::convert() [[clang::nonblocking]]
-{
- (this->*mConvertFunc)();
-}
+ void convert() [[clang::nonblocking]]
+ {
+ (this->*mConvertFunc)(); // This should not generate a warning.
+ }
+
+ template <typename T>
+ struct Holder {
+ T value;
+
+ T& operator*() { return value; }
+ };
+
+
+ void ptmfInExpr(Holder<ConvertFunction>& holder) [[clang::nonblocking]]
+ {
+ (this->*(*holder))(); // Should not generate a warning.
+ ((*this).*(*holder))(); // Should not generate a warning.
+ }
+
+ void ptmfInExpr(Holder<BlockingFunction>& holder) [[clang::nonblocking]]
+ {
+ (this->*(*holder))(); // expected-warning {{function with 'nonblocking' attribute must not call non-'nonblocking' expression}}
+ ((*this).*(*holder))(); // expected-warning {{function with 'nonblocking' attribute must not call non-'nonblocking' expression}}
+ }
+};
// Allow implicit conversion from array to pointer.
void nb14(unsigned idx) [[clang::nonblocking]]
@@ -354,6 +373,33 @@ struct Unsafe {
Unsafe(float y) [[clang::nonblocking]] : Unsafe(int(y)) {} // expected-warning {{constructor with 'nonblocking' attribute must not call non-'nonblocking' constructor 'Unsafe::Unsafe'}}
};
+// Exercise cases of a temporary with a safe constructor and unsafe destructor.
+void nb23()
+{
+ struct X {
+ int *ptr = nullptr;
+ X() {}
+ ~X() { delete ptr; } // expected-note 2 {{destructor cannot be inferred 'nonblocking' because it allocates or deallocates memory}}
+ };
+
+ auto inner = []() [[clang::nonblocking]] {
+ X(); // expected-warning {{lambda with 'nonblocking' attribute must not call non-'nonblocking' destructor 'nb23()::X::~X'}}
+ };
+
+ auto inner2 = [](X x) [[clang::nonblocking]] { // expected-warning {{lambda with 'nonblocking' attribute must not call non-'nonblocking' destructor 'nb23()::X::~X'}}
+ };
+
+}
+
+struct S2 { ~S2(); }; // expected-note 2 {{declaration cannot be inferred 'nonblocking' because it has no definition in this translation unit}}
+void nb24() {
+ S2 s;
+ [&]() [[clang::nonblocking]] {
+ [s]{ auto x = &s; }(); // expected-warning {{lambda with 'nonblocking' attribute must not call non-'nonblocking' destructor}} expected-note {{destructor cannot be inferred 'nonblocking' because it calls non-'nonblocking' destructor 'S2::~S2'}}
+ [=]{ auto x = &s; }(); // expected-warning {{lambda with 'nonblocking' attribute must not call non-'nonblocking' destructor}} expected-note {{destructor cannot be inferred 'nonblocking' because it calls non-'nonblocking' destructor 'S2::~S2'}}
+ }();
+}
+
struct DerivedFromUnsafe : public Unsafe {
DerivedFromUnsafe() [[clang::nonblocking]] {} // expected-warning {{constructor with 'nonblocking' attribute must not call non-'nonblocking' constructor 'Unsafe::Unsafe'}}
DerivedFromUnsafe(int x) [[clang::nonblocking]] : Unsafe(x) {} // expected-warning {{constructor with 'nonblocking' attribute must not call non-'nonblocking' constructor 'Unsafe::Unsafe'}}
diff --git a/clang/test/Sema/labeled-break-continue.c b/clang/test/Sema/labeled-break-continue.c
index 78f81c4..6b4adc2 100644
--- a/clang/test/Sema/labeled-break-continue.c
+++ b/clang/test/Sema/labeled-break-continue.c
@@ -1,6 +1,6 @@
-// RUN: %clang_cc1 -std=c2y -verify -fsyntax-only -fblocks %s
-// RUN: %clang_cc1 -std=c23 -verify -fsyntax-only -fblocks -fnamed-loops %s
-// RUN: %clang_cc1 -x c++ -verify -fsyntax-only -fblocks -fnamed-loops %s
+// RUN: %clang_cc1 -std=c2y -verify -Wunused -fsyntax-only -fblocks %s
+// RUN: %clang_cc1 -std=c23 -verify -Wunused -fsyntax-only -fblocks -fnamed-loops %s
+// RUN: %clang_cc1 -x c++ -verify -Wunused -fsyntax-only -fblocks -fnamed-loops %s
void f1() {
l1: while (true) {
@@ -159,3 +159,15 @@ void f7() {
continue d; // expected-error {{'continue' label does not name an enclosing loop}}
}
}
+
+void f8() {
+ l1: // no-warning
+ while (true) {
+ break l1;
+ }
+
+ l2: // no-warning
+ while (true) {
+ continue l2;
+ }
+}
diff --git a/clang/test/SemaCXX/vector.cpp b/clang/test/SemaCXX/vector.cpp
index 808bdb6..06195f0 100644
--- a/clang/test/SemaCXX/vector.cpp
+++ b/clang/test/SemaCXX/vector.cpp
@@ -786,3 +786,16 @@ const long long e = *0; // expected-error {{indirection requires pointer operand
double f = a - e; // expected-error {{cannot initialize a variable of type 'double' with an rvalue of type '__attribute__((__vector_size__(1 * sizeof(double)))) double' (vector of 1 'double' value)}}
int h = c - e; // expected-error {{cannot initialize a variable of type 'int' with an rvalue of type '__attribute__((__vector_size__(1 * sizeof(long)))) long' (vector of 1 'long' value)}}
}
+
+typedef int v_neg_size __attribute__((vector_size(-8))); // expected-error{{vector must have non-negative size}}
+typedef int v_neg_size_2 __attribute__((vector_size(-1 * 8))); // expected-error{{vector must have non-negative size}}
+typedef int v_ext_neg_size __attribute__((ext_vector_type(-8))); // expected-error{{vector must have non-negative size}}
+typedef int v_ext_neg_size2 __attribute__((ext_vector_type(-1 * 8))); // expected-error{{vector must have non-negative size}}
+
+
+#if __cplusplus >= 201103L
+
+template <int N> using templated_v_size = int __attribute__((vector_size(N))); // expected-error{{vector must have non-negative size}}
+templated_v_size<-8> templated_v_neg_size; //expected-note{{in instantiation of template type alias 'templated_v_size' requested here}}
+
+#endif
diff --git a/clang/test/SemaTemplate/ctad.cpp b/clang/test/SemaTemplate/ctad.cpp
index 1a575ea..60603f0 100644
--- a/clang/test/SemaTemplate/ctad.cpp
+++ b/clang/test/SemaTemplate/ctad.cpp
@@ -104,3 +104,15 @@ namespace ConvertDeducedTemplateArgument {
auto x = C(D<A::B>());
}
+
+namespace pr165560 {
+template <class T, class> struct S {
+ using A = T;
+ template <class> struct I { // expected-note{{candidate function template not viable: requires 1 argument, but 0 were provided}} \
+ // expected-note{{implicit deduction guide declared as 'template <class> I(pr165560::S<int, int>::I<type-parameter-0-0>) -> pr165560::S<int, int>::I<type-parameter-0-0>'}}
+ I(typename A::F) {} // expected-error{{type 'A' (aka 'int') cannot be used prior to '::' because it has no members}}
+ };
+};
+S<int, int>::I i; // expected-error{{no viable constructor or deduction guide for deduction of template arguments of 'S<int, int>::I'}} \
+ // expected-note{{while building implicit deduction guide first needed here}}
+}
diff --git a/clang/tools/scan-build/bin/set-xcode-analyzer b/clang/tools/scan-build/bin/set-xcode-analyzer
index 8e4a579..5d98c0c 100755
--- a/clang/tools/scan-build/bin/set-xcode-analyzer
+++ b/clang/tools/scan-build/bin/set-xcode-analyzer
@@ -5,10 +5,6 @@
# This one has the scripting bridge enabled.
import sys
-if sys.version_info < (3, 6):
- print "set-xcode-analyzer requires Python 3.6 or later"
- sys.exit(1)
-
import os
import subprocess
import re
@@ -18,7 +14,7 @@ import stat
from AppKit import *
def FindClangSpecs(path):
- print "(+) Searching for xcspec file in: ", path
+ print("(+) Searching for xcspec file in: ", path)
for root, dirs, files in os.walk(path):
for f in files:
if f.endswith(".xcspec") and f.startswith("Clang LLVM"):
@@ -49,14 +45,14 @@ def ModifySpec(path, isBuiltinAnalyzer, pathToChecker):
foundAnalyzer = False
t.write(line)
t.close()
- print "(+) processing:", path
+ print("(+) processing:", path)
try:
shutil.copy(t.name, path)
os.chmod(path, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH)
- except IOError, why:
- print " (-) Cannot update file:", why, "\n"
- except OSError, why:
- print " (-) Cannot update file:", why, "\n"
+ except IOError as why:
+ print(" (-) Cannot update file:", why, "\n")
+ except OSError as why:
+ print(" (-) Cannot update file:", why, "\n")
os.unlink(t.name)
def main():
@@ -75,7 +71,7 @@ def main():
# determine if Xcode is running
for x in NSWorkspace.sharedWorkspace().runningApplications():
if x.localizedName().find("Xcode") >= 0:
- print "(-) You must quit Xcode first before modifying its configuration files."
+ print("(-) You must quit Xcode first before modifying its configuration files.")
sys.exit(1)
isBuiltinAnalyzer = False
@@ -83,12 +79,12 @@ def main():
# Expand tildes.
path = os.path.expanduser(options.path)
if not path.endswith("clang"):
- print "(+) Using Clang bundled with checker build:", path
+ print("(+) Using Clang bundled with checker build:", path)
path = os.path.join(path, "bin", "clang");
else:
- print "(+) Using Clang located at:", path
+ print("(+) Using Clang located at:", path)
else:
- print "(+) Using the Clang bundled with Xcode"
+ print("(+) Using the Clang bundled with Xcode")
path = options.default
isBuiltinAnalyzer = True
@@ -108,7 +104,7 @@ def main():
ModifySpec(x, isBuiltinAnalyzer, path)
if not foundSpec:
- print "(-) No compiler configuration file was found. Xcode's analyzer has not been updated."
+ print("(-) No compiler configuration file was found. Xcode's analyzer has not been updated.")
if __name__ == '__main__':
main()
diff --git a/clang/unittests/Analysis/ExprMutationAnalyzerTest.cpp b/clang/unittests/Analysis/ExprMutationAnalyzerTest.cpp
index ef22960..8fc9a66d 100644
--- a/clang/unittests/Analysis/ExprMutationAnalyzerTest.cpp
+++ b/clang/unittests/Analysis/ExprMutationAnalyzerTest.cpp
@@ -2076,4 +2076,19 @@ TEST(ExprMutationAnalyzerTest, PointeeMutatedByReturn) {
}
}
+TEST(ExprMutationAnalyzerTest, PointeeMutatedByPointerToMemberOperator) {
+ // GH161913
+ const std::string Code = R"(
+ struct S { int i; };
+ void f(S s) {
+ S *x = &s;
+ (x->*(&S::i))++;
+ }
+ )";
+ auto AST = buildASTFromCodeWithArgs(Code, {"-Wno-everything"});
+ auto Results =
+ match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
+ EXPECT_TRUE(isPointeeMutated(Results, AST.get()));
+}
+
} // namespace clang
diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp
index ca9e792..24235b9 100644
--- a/clang/unittests/Format/FormatTest.cpp
+++ b/clang/unittests/Format/FormatTest.cpp
@@ -20824,6 +20824,13 @@ TEST_F(FormatTest, AlignWithLineBreaks) {
" argument1,\n"
" argument2);",
Style);
+
+ Style.ColumnLimit = 45;
+ verifyFormat("auto xxxxxxxx = foo;\n"
+ "auto x = whatever ? some / long -\n"
+ " computition / stuff\n"
+ " : random;",
+ Style);
}
TEST_F(FormatTest, AlignWithInitializerPeriods) {
diff --git a/clang/unittests/Format/FormatTestComments.cpp b/clang/unittests/Format/FormatTestComments.cpp
index 399f835..d7b2257 100644
--- a/clang/unittests/Format/FormatTestComments.cpp
+++ b/clang/unittests/Format/FormatTestComments.cpp
@@ -106,24 +106,12 @@ TEST_F(FormatTestComments, UnderstandsSingleLineComments) {
" // line c\n"
" c\n"
"};",
- "enum A {\n"
- " // line a\n"
- " a,\n"
- " b, // line b\n"
- "\n"
- " // line c\n"
- " c\n"
- "};",
- Style20);
- verifyFormat("enum A {\n"
- " a, // line 1\n"
- " // line 2\n"
- "};",
- "enum A {\n"
- " a, // line 1\n"
- " // line 2\n"
- "};",
Style20);
+ verifyNoChange("enum A {\n"
+ " a, // line 1\n"
+ " // line 2\n"
+ "};",
+ Style20);
verifyFormat("enum A {\n"
" a, // line 1\n"
" // line 2\n"
@@ -133,17 +121,12 @@ TEST_F(FormatTestComments, UnderstandsSingleLineComments) {
" // line 2\n"
"};",
Style20);
- verifyFormat("enum A {\n"
- " a, // line 1\n"
- " // line 2\n"
- " b\n"
- "};",
- "enum A {\n"
- " a, // line 1\n"
- " // line 2\n"
- " b\n"
- "};",
- Style20);
+ verifyNoChange("enum A {\n"
+ " a, // line 1\n"
+ " // line 2\n"
+ " b\n"
+ "};",
+ Style20);
verifyFormat("enum A {\n"
" a, // line 1\n"
" // line 2\n"
@@ -487,12 +470,9 @@ TEST_F(FormatTestComments, AlignsBlockComments) {
" Don't try to outdent if there's not enough indentation.\n"
" */");
- verifyFormat("int i; /* Comment with empty...\n"
- " *\n"
- " * line. */",
- "int i; /* Comment with empty...\n"
- " *\n"
- " * line. */");
+ verifyNoChange("int i; /* Comment with empty...\n"
+ " *\n"
+ " * line. */");
verifyFormat("int foobar = 0; /* comment */\n"
"int bar = 0; /* multiline\n"
" comment 1 */\n"
@@ -555,8 +535,6 @@ TEST_F(FormatTestComments, CommentReflowingCanApplyOnlyToIndents) {
TEST_F(FormatTestComments, CorrectlyHandlesLengthOfBlockComments) {
verifyFormat("double *x; /* aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa */",
- "double *x; /* aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa */");
verifyFormat(
"void ffffffffffff(\n"
@@ -680,17 +658,12 @@ TEST_F(FormatTestComments, SplitsLongCxxComments) {
verifyFormat("#define XXX // q w e r\n"
" // t y u i",
"#define XXX //q w e r t y u i", Style22);
- verifyFormat("{\n"
- " //\n"
- " //\\\n"
- " // long 1 2 3 4 5\n"
- "}",
- "{\n"
- " //\n"
- " //\\\n"
- " // long 1 2 3 4 5\n"
- "}",
- Style20);
+ verifyNoChange("{\n"
+ " //\n"
+ " //\\\n"
+ " // long 1 2 3 4 5\n"
+ "}",
+ Style20);
verifyFormat("{\n"
" //\n"
" //\\\n"
@@ -730,19 +703,13 @@ TEST_F(FormatTestComments, PreservesHangingIndentInCxxComments) {
}
TEST_F(FormatTestComments, DontSplitLineCommentsWithEscapedNewlines) {
- verifyFormat("// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\n"
- "// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\n"
- "// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
- "// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\n"
- "// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\n"
- "// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
- verifyFormat("int a; // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\n"
- " // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\n"
- " // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
- "int a; // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\n"
- " // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\n"
- " // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
- getLLVMStyleWithColumns(50));
+ verifyNoChange("// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\n"
+ "// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\n"
+ "// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
+ verifyNoChange("int a; // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\n"
+ " // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\n"
+ " // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+ getLLVMStyleWithColumns(50));
verifyFormat("double\n"
" a; // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\n"
" // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\n"
@@ -773,10 +740,8 @@ TEST_F(FormatTestComments, DontIntroduceMultilineComments) {
TEST_F(FormatTestComments, DontSplitLineCommentsWithPragmas) {
FormatStyle Pragmas = getLLVMStyleWithColumns(30);
Pragmas.CommentPragmas = "^ IWYU pragma:";
- verifyFormat("// IWYU pragma: aaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbb",
- "// IWYU pragma: aaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbb", Pragmas);
- verifyFormat("/* IWYU pragma: aaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbb */",
- "/* IWYU pragma: aaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbb */", Pragmas);
+ verifyFormat("// IWYU pragma: aaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbb", Pragmas);
+ verifyFormat("/* IWYU pragma: aaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbb */", Pragmas);
}
TEST_F(FormatTestComments, PriorityOfCommentBreaking) {
@@ -812,26 +777,17 @@ TEST_F(FormatTestComments, PriorityOfCommentBreaking) {
TEST_F(FormatTestComments, MultiLineCommentsInDefines) {
const auto Style17 = getLLVMStyleWithColumns(17);
- verifyFormat("#define A(x) /* \\\n"
- " a comment \\\n"
- " inside */ \\\n"
- " f();",
- "#define A(x) /* \\\n"
- " a comment \\\n"
- " inside */ \\\n"
- " f();",
- Style17);
- verifyFormat("#define A( \\\n"
- " x) /* \\\n"
- " a comment \\\n"
- " inside */ \\\n"
- " f();",
- "#define A( \\\n"
- " x) /* \\\n"
- " a comment \\\n"
- " inside */ \\\n"
- " f();",
- Style17);
+ verifyNoChange("#define A(x) /* \\\n"
+ " a comment \\\n"
+ " inside */ \\\n"
+ " f();",
+ Style17);
+ verifyNoChange("#define A( \\\n"
+ " x) /* \\\n"
+ " a comment \\\n"
+ " inside */ \\\n"
+ " f();",
+ Style17);
}
TEST_F(FormatTestComments, LineCommentsInMacrosDoNotGetEscapedNewlines) {
@@ -865,33 +821,20 @@ TEST_F(FormatTestComments, ParsesCommentsAdjacentToPPDirectives) {
TEST_F(FormatTestComments, KeepsLevelOfCommentBeforePPDirective) {
// Keep the current level if the comment was originally not aligned with
// the preprocessor directive.
- verifyFormat("void f() {\n"
- " int i;\n"
- " /* comment */\n"
- "#ifdef A\n"
- " int j;\n"
- "}",
- "void f() {\n"
- " int i;\n"
- " /* comment */\n"
- "#ifdef A\n"
- " int j;\n"
- "}");
+ verifyNoChange("void f() {\n"
+ " int i;\n"
+ " /* comment */\n"
+ "#ifdef A\n"
+ " int j;\n"
+ "}");
- verifyFormat("void f() {\n"
- " int i;\n"
- " /* comment */\n"
- "\n"
- "#ifdef A\n"
- " int j;\n"
- "}",
- "void f() {\n"
- " int i;\n"
- " /* comment */\n"
- "\n"
- "#ifdef A\n"
- " int j;\n"
- "}");
+ verifyNoChange("void f() {\n"
+ " int i;\n"
+ " /* comment */\n"
+ "\n"
+ "#ifdef A\n"
+ " int j;\n"
+ "}");
verifyFormat("int f(int i) {\n"
" if (true) {\n"
@@ -1060,18 +1003,12 @@ TEST_F(FormatTestComments, KeepsLevelOfCommentBeforePPDirective) {
// Align with the preprocessor directive if the comment was originally aligned
// with the preprocessor directive and there is no newline between the comment
// and the preprocessor directive.
- verifyFormat("void f() {\n"
- " int i;\n"
- "/* comment */\n"
- "#ifdef A\n"
- " int j;\n"
- "}",
- "void f() {\n"
- " int i;\n"
- "/* comment */\n"
- "#ifdef A\n"
- " int j;\n"
- "}");
+ verifyNoChange("void f() {\n"
+ " int i;\n"
+ "/* comment */\n"
+ "#ifdef A\n"
+ " int j;\n"
+ "}");
verifyFormat("int f(int i) {\n"
" if (true) {\n"
@@ -1245,13 +1182,10 @@ TEST_F(FormatTestComments, SplitsLongLinesInComments) {
" wherever_a_space_occurs \n"
" */",
Style20);
- verifyFormat("/*\n"
- " * This_comment_can_not_be_broken_into_lines\n"
- " */",
- "/*\n"
- " * This_comment_can_not_be_broken_into_lines\n"
- " */",
- Style20);
+ verifyNoChange("/*\n"
+ " * This_comment_can_not_be_broken_into_lines\n"
+ " */",
+ Style20);
verifyFormat("{\n"
" /*\n"
" This is another\n"
@@ -1445,17 +1379,12 @@ TEST_F(FormatTestComments, AlignsPPElseEndifComments) {
"int iiii; // CC\n"
"#endif // B",
Style20);
- verifyFormat("#if A\n"
- "#else // A1\n"
- " // A2\n"
- "int ii;\n"
- "#endif // B",
- "#if A\n"
- "#else // A1\n"
- " // A2\n"
- "int ii;\n"
- "#endif // B",
- Style20);
+ verifyNoChange("#if A\n"
+ "#else // A1\n"
+ " // A2\n"
+ "int ii;\n"
+ "#endif // B",
+ Style20);
}
TEST_F(FormatTestComments, CommentsInStaticInitializers) {
@@ -1528,10 +1457,6 @@ TEST_F(FormatTestComments, LineCommentsAfterRightBrace) {
verifyFormat("if (true) { // comment about branch\n"
" // comment about f\n"
" f();\n"
- "}",
- "if (true) { // comment about branch\n"
- " // comment about f\n"
- " f();\n"
"}");
verifyFormat("if (1) { // if line 1\n"
" // if line 2\n"
@@ -1582,6 +1507,7 @@ TEST_F(FormatTestComments, LineCommentsAfterRightBrace) {
TEST_F(FormatTestComments, ReflowsComments) {
const auto Style20 = getLLVMStyleWithColumns(20);
const auto Style22 = getLLVMStyleWithColumns(22);
+
// Break a long line and reflow with the full next line.
verifyFormat("// long long long\n"
"// long long",
@@ -2149,11 +2075,9 @@ TEST_F(FormatTestComments, ReflowsComments) {
Style20);
// Don't break or reflow comments on import lines.
- verifyFormat("#include \"t\" /* l l l\n"
- " * l */",
- "#include \"t\" /* l l l\n"
- " * l */",
- Style20);
+ verifyNoChange("#include \"t\" /* l l l\n"
+ " * l */",
+ Style20);
// Don't reflow between different trailing comment sections.
verifyFormat("int i; // long long\n"
@@ -2209,7 +2133,9 @@ TEST_F(FormatTestComments, ReflowsCommentsPrecise) {
"// some text that reflows\n"
"// into foo",
Style);
+
Style.ColumnLimit = 21;
+
// Given one more column, "// reflows into foo" does fit the limit, so we
// do not compress the whitespace.
verifyFormat("// some text that\n"
@@ -2228,6 +2154,7 @@ TEST_F(FormatTestComments, ReflowsCommentsPrecise) {
"// some text that reflows\n"
"// into1234567",
Style);
+
// Secondly, when the next line ends later, but the first word in that line
// is precisely one column over the limit, do not reflow.
verifyFormat("// some text that\n"
@@ -2240,6 +2167,7 @@ TEST_F(FormatTestComments, ReflowsCommentsPrecise) {
TEST_F(FormatTestComments, ReflowsCommentsWithExtraWhitespace) {
const auto Style16 = getLLVMStyleWithColumns(16);
+
// Baseline.
verifyFormat("// some text\n"
"// that re flows",
@@ -2546,37 +2474,23 @@ TEST_F(FormatTestComments, BlockComments) {
verifyFormat("void f(int * /* unused */) {}");
- verifyFormat("/*\n"
- " **\n"
- " */",
- "/*\n"
- " **\n"
- " */");
- verifyFormat("/*\n"
- " *q\n"
- " */",
- "/*\n"
- " *q\n"
- " */");
- verifyFormat("/*\n"
- " * q\n"
- " */",
- "/*\n"
- " * q\n"
- " */");
- verifyFormat("/*\n"
- " **/",
- "/*\n"
- " **/");
- verifyFormat("/*\n"
- " ***/",
- "/*\n"
- " ***/");
+ verifyNoChange("/*\n"
+ " **\n"
+ " */");
+ verifyNoChange("/*\n"
+ " *q\n"
+ " */");
+ verifyNoChange("/*\n"
+ " * q\n"
+ " */");
+ verifyNoChange("/*\n"
+ " **/");
+ verifyNoChange("/*\n"
+ " ***/");
}
TEST_F(FormatTestComments, BlockCommentsInMacros) {
const auto Style20 = getLLVMStyleWithColumns(20);
-
verifyFormat("#define A \\\n"
" { \\\n"
" /* one line */ \\\n"
@@ -2599,7 +2513,6 @@ TEST_F(FormatTestComments, BlockCommentsInMacros) {
TEST_F(FormatTestComments, BlockCommentsAtEndOfLine) {
const auto Style15 = getLLVMStyleWithColumns(15);
-
verifyFormat("a = {\n"
" 1111 /* */\n"
"};",
@@ -2774,11 +2687,6 @@ TEST_F(FormatTestComments, AlignTrailingComments) {
" // comment about a\n"
" int a;\n"
"};",
- "class A {\n"
- "public: // public comment\n"
- " // comment about a\n"
- " int a;\n"
- "};",
Style40);
verifyFormat("class A {\n"
"public: // public comment 1\n"
@@ -3106,41 +3014,26 @@ TEST_F(FormatTestComments, AlignTrailingCommentsLeave) {
FormatStyle Style = getLLVMStyle();
Style.AlignTrailingComments.Kind = FormatStyle::TCAS_Leave;
- verifyFormat("int a;// do not touch\n"
- "int b; // any comments\n"
- "int c; // comment\n"
- "int d; // comment",
- "int a;// do not touch\n"
- "int b; // any comments\n"
- "int c; // comment\n"
- "int d; // comment",
- Style);
+ verifyNoChange("int a;// do not touch\n"
+ "int b; // any comments\n"
+ "int c; // comment\n"
+ "int d; // comment",
+ Style);
- verifyFormat("int a; // do not touch\n"
- "int b; // any comments\n"
- "int c; // comment\n"
- "int d;// comment",
- "int a; // do not touch\n"
- "int b; // any comments\n"
- "int c; // comment\n"
- "int d;// comment",
- Style);
+ verifyNoChange("int a; // do not touch\n"
+ "int b; // any comments\n"
+ "int c; // comment\n"
+ "int d;// comment",
+ Style);
- verifyFormat("// do not touch\n"
- "int a; // any comments\n"
- "\n"
- " // comment\n"
- "// comment\n"
- "\n"
- "// comment",
- "// do not touch\n"
- "int a; // any comments\n"
- "\n"
- " // comment\n"
- "// comment\n"
- "\n"
- "// comment",
- Style);
+ verifyNoChange("// do not touch\n"
+ "int a; // any comments\n"
+ "\n"
+ " // comment\n"
+ "// comment\n"
+ "\n"
+ "// comment",
+ Style);
verifyFormat("// do not touch\n"
"int a; // any comments\n"
@@ -3178,23 +3071,15 @@ TEST_F(FormatTestComments, AlignTrailingCommentsLeave) {
// Allow to keep 2 empty lines
Style.MaxEmptyLinesToKeep = 2;
- verifyFormat("// do not touch\n"
- "int a; // any comments\n"
- "\n"
- "\n"
- " // comment\n"
- "// comment\n"
- "\n"
- "// comment",
- "// do not touch\n"
- "int a; // any comments\n"
- "\n"
- "\n"
- " // comment\n"
- "// comment\n"
- "\n"
- "// comment",
- Style);
+ verifyNoChange("// do not touch\n"
+ "int a; // any comments\n"
+ "\n"
+ "\n"
+ " // comment\n"
+ "// comment\n"
+ "\n"
+ "// comment",
+ Style);
Style.MaxEmptyLinesToKeep = 1;
// Just format comments normally when leaving exceeds the column limit
@@ -3233,16 +3118,16 @@ TEST_F(FormatTestComments, DontAlignNamespaceComments) {
Style.NamespaceMacros.push_back("TESTSUITE");
Style.ShortNamespaceLines = 0;
- StringRef Input = "namespace A {\n"
- " TESTSUITE(B) {\n"
- " namespace C {\n"
- " namespace D { //\n"
- " } // namespace D\n"
- " std::string Foo = Bar; // Comment\n"
- " std::string BazString = Baz; // C2\n"
- " } // namespace C\n"
- " }\n"
- "} // NaMeSpAcE A";
+ constexpr StringRef Input("namespace A {\n"
+ " TESTSUITE(B) {\n"
+ " namespace C {\n"
+ " namespace D { //\n"
+ " } // namespace D\n"
+ " std::string Foo = Bar; // Comment\n"
+ " std::string BazString = Baz; // C2\n"
+ " } // namespace C\n"
+ " }\n"
+ "} // NaMeSpAcE A");
EXPECT_TRUE(Style.FixNamespaceComments);
EXPECT_EQ(Style.AlignTrailingComments.Kind, FormatStyle::TCAS_Always);
@@ -3326,21 +3211,21 @@ TEST_F(FormatTestComments, DontAlignNamespaceComments) {
Style.AlignTrailingComments.Kind = FormatStyle::TCAS_Always;
Style.FixNamespaceComments = true;
- Input = "namespace A {\n"
- " int Foo;\n"
- " int Bar;\n"
- "}\n"
- "// Comment";
+ constexpr StringRef Code("namespace A {\n"
+ " int Foo;\n"
+ " int Bar;\n"
+ "}\n"
+ "// Comment");
verifyFormat("namespace A {\n"
" int Foo;\n"
" int Bar;\n"
"} // namespace A\n"
"// Comment",
- Input, Style);
+ Code, Style);
Style.FixNamespaceComments = false;
- verifyFormat(Input, Style);
+ verifyFormat(Code, Style);
}
TEST_F(FormatTestComments, DontAlignOverScope) {
@@ -3498,10 +3383,8 @@ TEST_F(FormatTestComments, AlignsBlockCommentDecorations) {
" */",
"/*\n"
"*/");
- verifyFormat("/*\n"
- " */",
- "/*\n"
- " */");
+ verifyNoChange("/*\n"
+ " */");
verifyFormat("/*\n"
" */",
"/*\n"
@@ -3512,10 +3395,8 @@ TEST_F(FormatTestComments, AlignsBlockCommentDecorations) {
" * line */",
"/*\n"
"* line */");
- verifyFormat("/*\n"
- " * line */",
- "/*\n"
- " * line */");
+ verifyNoChange("/*\n"
+ " * line */");
verifyFormat("/*\n"
" * line */",
"/*\n"
@@ -3528,10 +3409,8 @@ TEST_F(FormatTestComments, AlignsBlockCommentDecorations) {
" * line */",
"/**\n"
"* line */");
- verifyFormat("/**\n"
- " * line */",
- "/**\n"
- " * line */");
+ verifyNoChange("/**\n"
+ " * line */");
verifyFormat("/**\n"
" * line */",
"/**\n"
@@ -3566,10 +3445,8 @@ TEST_F(FormatTestComments, AlignsBlockCommentDecorations) {
" */");
// Align two lines.
- verifyFormat("/* line 1\n"
- " * line 2 */",
- "/* line 1\n"
- " * line 2 */");
+ verifyNoChange("/* line 1\n"
+ " * line 2 */");
verifyFormat("/* line 1\n"
" * line 2 */",
"/* line 1\n"
@@ -3590,10 +3467,8 @@ TEST_F(FormatTestComments, AlignsBlockCommentDecorations) {
" * line 2 */",
"int i; /* line 1\n"
"* line 2 */");
- verifyFormat("int i; /* line 1\n"
- " * line 2 */",
- "int i; /* line 1\n"
- " * line 2 */");
+ verifyNoChange("int i; /* line 1\n"
+ " * line 2 */");
verifyFormat("int i; /* line 1\n"
" * line 2 */",
"int i; /* line 1\n"
@@ -3695,6 +3570,7 @@ TEST_F(FormatTestComments, NonTrailingBlockComments) {
TEST_F(FormatTestComments, PythonStyleComments) {
const auto ProtoStyle20 = getTextProtoStyleWithColumns(20);
+
// Keeps a space after '#'.
verifyFormat("# comment\n"
"key: value",
@@ -3798,8 +3674,6 @@ TEST_F(FormatTestComments, ReflowBackslashCrash) {
TEST_F(FormatTestComments, IndentsLongJavadocAnnotatedLines) {
FormatStyle Style = getGoogleStyle(FormatStyle::LK_Java);
Style.ColumnLimit = 60;
- FormatStyle Style20 = getGoogleStyle(FormatStyle::LK_Java);
- Style20.ColumnLimit = 20;
verifyFormat("/**\n"
" * @param x long long long long long long long long long\n"
" * long\n"
@@ -3827,6 +3701,10 @@ TEST_F(FormatTestComments, IndentsLongJavadocAnnotatedLines) {
"long long long long long long long long long long long\n"
" */",
Style);
+
+ FormatStyle Style20 = getGoogleStyle(FormatStyle::LK_Java);
+ Style20.ColumnLimit = 20;
+
verifyFormat("/**\n"
" * Sentence that\n"
" * should be broken.\n"
@@ -3895,7 +3773,6 @@ TEST_F(FormatTestComments, IndentsLongJavadocAnnotatedLines) {
}
TEST_F(FormatTestComments, SpaceAtLineCommentBegin) {
- FormatStyle Style = getLLVMStyle();
constexpr StringRef NoTextInComment(" // \n"
"\n"
"void foo() {// \n"
@@ -3907,8 +3784,9 @@ TEST_F(FormatTestComments, SpaceAtLineCommentBegin) {
"void foo() { //\n"
" //\n"
"}",
- NoTextInComment, Style);
+ NoTextInComment);
+ auto Style = getLLVMStyle();
Style.SpacesInLineCommentPrefix.Minimum = 0;
verifyFormat("//#comment", Style);
verifyFormat("//\n"
@@ -3927,7 +3805,6 @@ TEST_F(FormatTestComments, SpaceAtLineCommentBegin) {
"}",
NoTextInComment, Style);
- Style = getLLVMStyle();
constexpr StringRef Code(
"//Free comment without space\n"
"\n"
@@ -4216,8 +4093,9 @@ TEST_F(FormatTestComments, SpaceAtLineCommentBegin) {
"// vv will only move\n"
"// } if the line above does");
- verifyFormat(Code2, Code, Style);
+ verifyFormat(Code2, Code);
+ Style = getLLVMStyle();
Style.SpacesInLineCommentPrefix = {0, 0};
verifyFormat("//#comment", "// #comment", Style);
verifyFormat(Code3, Code, Style);
@@ -4226,12 +4104,12 @@ TEST_F(FormatTestComments, SpaceAtLineCommentBegin) {
verifyFormat(Code4, Code, Style);
Style = getLLVMStyleWithColumns(20);
- StringRef WrapCode = "//Lorem ipsum dolor sit amet\n"
- "\n"
- "// Lorem ipsum dolor sit amet\n"
- "\n"
- "void f() {//Hello World\n"
- "}";
+ constexpr StringRef WrapCode("//Lorem ipsum dolor sit amet\n"
+ "\n"
+ "// Lorem ipsum dolor sit amet\n"
+ "\n"
+ "void f() {//Hello World\n"
+ "}");
verifyFormat("// Lorem ipsum dolor\n"
"// sit amet\n"
@@ -4506,20 +4384,20 @@ TEST_F(FormatTestComments, SplitCommentIntroducers) {
}
TEST_F(FormatTestComments, LineCommentsOnStartOfFunctionCall) {
- auto Style = getLLVMStyle();
-
- EXPECT_EQ(Style.Cpp11BracedListStyle, FormatStyle::BLS_AlignFirstComment);
verifyFormat("Type name{// Comment\n"
- " value};",
- Style);
+ " value};");
+ auto Style = getLLVMStyle();
+ EXPECT_EQ(Style.Cpp11BracedListStyle, FormatStyle::BLS_AlignFirstComment);
Style.Cpp11BracedListStyle = FormatStyle::BLS_Block;
+
verifyFormat("Type name{ // Comment\n"
" value\n"
"};",
Style);
Style.Cpp11BracedListStyle = FormatStyle::BLS_FunctionCall;
+
verifyFormat("Type name{ // Comment\n"
" value};",
Style);
diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp
index c046142..815c79e 100644
--- a/clang/unittests/Format/TokenAnnotatorTest.cpp
+++ b/clang/unittests/Format/TokenAnnotatorTest.cpp
@@ -799,6 +799,30 @@ TEST_F(TokenAnnotatorTest, UnderstandsTemplateTemplateParameters) {
EXPECT_TOKEN(Tokens[23], tok::identifier, TT_ClassHeadName);
}
+TEST_F(TokenAnnotatorTest, UnderstandsCommonCppTemplates) {
+ auto Tokens =
+ annotate("static_assert(std::conditional_t<A || B, C, D>::value);");
+ ASSERT_EQ(Tokens.size(), 19u) << Tokens;
+ EXPECT_TOKEN(Tokens[5], tok::less, TT_TemplateOpener);
+ EXPECT_TOKEN(Tokens[13], tok::greater, TT_TemplateCloser);
+
+ Tokens =
+ annotate("static_assert(std::conditional<A || B, C, D>::type::value);");
+ ASSERT_EQ(Tokens.size(), 21u) << Tokens;
+ EXPECT_TOKEN(Tokens[5], tok::less, TT_TemplateOpener);
+ EXPECT_TOKEN(Tokens[13], tok::greater, TT_TemplateCloser);
+
+ Tokens = annotate("static_assert(fancy_v<A || B>);");
+ ASSERT_EQ(Tokens.size(), 11u) << Tokens;
+ EXPECT_TOKEN(Tokens[3], tok::less, TT_TemplateOpener);
+ EXPECT_TOKEN(Tokens[7], tok::greater, TT_TemplateCloser);
+
+ Tokens = annotate("static_assert(fancy<A || B>::value);");
+ ASSERT_EQ(Tokens.size(), 13u) << Tokens;
+ EXPECT_TOKEN(Tokens[3], tok::less, TT_TemplateOpener);
+ EXPECT_TOKEN(Tokens[7], tok::greater, TT_TemplateCloser);
+}
+
TEST_F(TokenAnnotatorTest, UnderstandsWhitespaceSensitiveMacros) {
FormatStyle Style = getLLVMStyle();
Style.WhitespaceSensitiveMacros.push_back("FOO");
@@ -2686,6 +2710,7 @@ TEST_F(TokenAnnotatorTest, UnderstandsVerilogOperators) {
// precedence.
std::pair<prec::Level, std::string> JoinedBinary[] = {
{prec::Comma, "->"}, {prec::Comma, "<->"},
+ {prec::Comma, "#-#"}, {prec::Comma, "#=#"},
{prec::Assignment, "+="}, {prec::Assignment, "-="},
{prec::Assignment, "*="}, {prec::Assignment, "/="},
{prec::Assignment, "%="}, {prec::Assignment, "&="},
diff --git a/clang/www/c_status.html b/clang/www/c_status.html
index b803962..80a52f7 100644
--- a/clang/www/c_status.html
+++ b/clang/www/c_status.html
@@ -329,7 +329,7 @@ conformance.</p>
<tr>
<td>The __COUNTER__ predefined macro</td>
<td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3457.htm">N3457</a></td>
- <td class="unknown" align="center">Unknown</td>
+ <td class="unreleased" align="center">Clang 22</td>
</tr>
<tr>
<td>Chasing Ghosts I: constant expressions v2</td>
diff --git a/clang/www/cxx_dr_status.html b/clang/www/cxx_dr_status.html
index 0312c9d..e9fadb2 100755
--- a/clang/www/cxx_dr_status.html
+++ b/clang/www/cxx_dr_status.html
@@ -40,2843 +40,3314 @@
<p>This page tracks which C++ defect reports are implemented within Clang.</p>
-<table width="689" border="1" cellspacing="0">
+<table width="892" border="1" cellspacing="0">
<tr>
<th>Number</th>
+ <th>Section</th>
<th>Status</th>
<th>Issue title</th>
<th>Available in Clang?</th>
</tr>
<tr id="1">
<td><a href="https://cplusplus.github.io/CWG/issues/1.html">1</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>TC1</td>
<td>What if two using-declarations refer to the same function but the declarations introduce different default-arguments?</td>
<td class="none" align="center">No</td>
</tr>
<tr class="open" id="2">
<td><a href="https://cplusplus.github.io/CWG/issues/2.html">2</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.res">temp.dep.res</a>]</td>
<td>drafting</td>
<td>How can dependent names be used in member declarations that appear outside of the class template definition?</td>
<td align="center">Not resolved</td>
</tr>
<tr id="3">
<td><a href="https://cplusplus.github.io/CWG/issues/3.html">3</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>NAD</td>
<td>The template compilation model rules render some explicit specialization declarations not visible during instantiation</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="4">
<td><a href="https://cplusplus.github.io/CWG/issues/4.html">4</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>CD1</td>
<td>Does extern "C" affect the linkage of function names with internal linkage?</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="5">
<td><a href="https://cplusplus.github.io/CWG/issues/5.html">5</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD1</td>
<td>CV-qualifiers and type conversions</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="6">
<td><a href="https://cplusplus.github.io/CWG/issues/6.html">6</a></td>
+ <td>[<a href="https://wg21.link/class.copy.elision">class.copy.elision</a>]</td>
<td>NAD</td>
<td>Should the optimization that allows a class object to alias another object also allow the case of a parameter in an inline function to alias its argument?</td>
<td class="full" align="center">Yes</td>
</tr>
<tr id="7">
<td><a href="https://cplusplus.github.io/CWG/issues/7.html">7</a></td>
+ <td>[<a href="https://wg21.link/class.access.base">class.access.base</a>]</td>
<td>NAD</td>
<td>Can a class with a private virtual base class be derived from?</td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="8">
<td><a href="https://cplusplus.github.io/CWG/issues/8.html">8</a></td>
+ <td>[<a href="https://wg21.link/class.access">class.access</a>]</td>
<td>CD1</td>
<td>Access to template arguments used in a function return type and in the nested name specifier</td>
<td class="full" align="center">Duplicate of <a href="#45">45</a></td>
</tr>
<tr id="9">
<td><a href="https://cplusplus.github.io/CWG/issues/9.html">9</a></td>
+ <td>[<a href="https://wg21.link/class.access.base">class.access.base</a>]</td>
<td>CD1</td>
<td>Clarification of access to base class members</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="10">
<td><a href="https://cplusplus.github.io/CWG/issues/10.html">10</a></td>
+ <td>[<a href="https://wg21.link/class.access.nest">class.access.nest</a>]</td>
<td>CD1</td>
<td>Can a nested class access its own class name as a qualified name if it is a private member of the enclosing class?</td>
<td class="full" align="center">Duplicate of <a href="#45">45</a></td>
</tr>
<tr id="11">
<td><a href="https://cplusplus.github.io/CWG/issues/11.html">11</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>CD1</td>
<td>How do the keywords typename/template interact with using-declarations?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="12">
<td><a href="https://cplusplus.github.io/CWG/issues/12.html">12</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>dup</td>
<td>Default arguments on different declarations for the same function and the Koenig lookup</td>
<td class="full-superseded" align="center">Superseded by <a href="#239">239</a></td>
</tr>
<tr id="13">
<td><a href="https://cplusplus.github.io/CWG/issues/13.html">13</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>NAD</td>
<td>extern "C" for Parameters of Function Templates</td>
<td class="none" align="center">No</td>
</tr>
<tr id="14">
<td><a href="https://cplusplus.github.io/CWG/issues/14.html">14</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>NAD</td>
<td>extern "C" functions and declarations in different namespaces</td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="15">
<td><a href="https://cplusplus.github.io/CWG/issues/15.html">15</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>dup</td>
<td>Default arguments for parameters of function templates</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="16">
<td><a href="https://cplusplus.github.io/CWG/issues/16.html">16</a></td>
+ <td>[<a href="https://wg21.link/class.access.base">class.access.base</a>]</td>
<td>CD1</td>
<td>Access to members of indirect private base classes</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="17">
<td><a href="https://cplusplus.github.io/CWG/issues/17.html">17</a></td>
+ <td>[<a href="https://wg21.link/class.access.base">class.access.base</a>]</td>
<td>NAD</td>
<td>Footnote 99 should discuss the naming class when describing members that can be accessed from friends</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="18">
<td><a href="https://cplusplus.github.io/CWG/issues/18.html">18</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>NAD</td>
<td>f(TYPE) where TYPE is void should be allowed</td>
<td class="full-superseded" align="center">Superseded by <a href="#577">577</a></td>
</tr>
<tr id="19">
<td><a href="https://cplusplus.github.io/CWG/issues/19.html">19</a></td>
+ <td>[<a href="https://wg21.link/class.protected">class.protected</a>]</td>
<td>NAD</td>
<td>Clarify protected member access</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="20">
<td><a href="https://cplusplus.github.io/CWG/issues/20.html">20</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>TC1</td>
<td>Some clarifications needed for 12.8 para 15</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="21">
<td><a href="https://cplusplus.github.io/CWG/issues/21.html">21</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>TC1</td>
<td>Can a default argument for a template parameter appear in a friend declaration?</td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="22">
<td><a href="https://cplusplus.github.io/CWG/issues/22.html">22</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.res">temp.dep.res</a>]</td>
<td>TC1</td>
<td>Template parameter with a default argument that refers to itself</td>
<td class="full-superseded" align="center">Superseded by <a href="#481">481</a></td>
</tr>
<tr id="23">
<td><a href="https://cplusplus.github.io/CWG/issues/23.html">23</a></td>
+ <td>[<a href="https://wg21.link/temp.func.order">temp.func.order</a>]</td>
<td>NAD</td>
<td>Some questions regarding partial ordering of function templates</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="24">
<td><a href="https://cplusplus.github.io/CWG/issues/24.html">24</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>TC1</td>
<td>Errors in examples in 14.7.3</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="25">
<td><a href="https://cplusplus.github.io/CWG/issues/25.html">25</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>TC1</td>
<td>Exception specifications and pointers to members</td>
<td class="full" align="center">Clang 4</td>
</tr>
<tr id="26">
<td><a href="https://cplusplus.github.io/CWG/issues/26.html">26</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>NAD</td>
<td>Copy constructors and default arguments</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="27">
<td><a href="https://cplusplus.github.io/CWG/issues/27.html">27</a></td>
+ <td>[<a href="https://wg21.link/over.built">over.built</a>]</td>
<td>NAD</td>
<td>Overload ambiguities for builtin ?: prototypes</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="28">
<td><a href="https://cplusplus.github.io/CWG/issues/28.html">28</a></td>
+ <td>[<a href="https://wg21.link/basic.start.dynamic">basic.start.dynamic</a>]</td>
<td>CD1</td>
<td>'exit', 'signal' and static object destruction</td>
<td class="na" align="center">N/A (Library DR)</td>
</tr>
<tr id="29">
<td><a href="https://cplusplus.github.io/CWG/issues/29.html">29</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>CD1</td>
<td>Linkage of locally declared functions</td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="30">
<td><a href="https://cplusplus.github.io/CWG/issues/30.html">30</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>TC1</td>
<td>Valid uses of "<TT>::template</TT>"</td>
<td class="full-superseded" align="center">Superseded by <a href="#468">468</a> (C++11 onwards)</td>
</tr>
<tr id="31">
<td><a href="https://cplusplus.github.io/CWG/issues/31.html">31</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>NAD</td>
<td>Looking up new/delete</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="32">
<td><a href="https://cplusplus.github.io/CWG/issues/32.html">32</a></td>
+ <td>[<a href="https://wg21.link/temp">temp</a>]</td>
<td>TC1</td>
<td>Clarification of explicit instantiation of non-exported templates</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="33">
<td><a href="https://cplusplus.github.io/CWG/issues/33.html">33</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>TC1</td>
<td>Argument dependent lookup and overloaded functions</td>
<td class="full" align="center">Clang 9</td>
</tr>
<tr id="34">
<td><a href="https://cplusplus.github.io/CWG/issues/34.html">34</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>NAD</td>
<td>Argument dependent lookup and points of instantiation</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="35">
<td><a href="https://cplusplus.github.io/CWG/issues/35.html">35</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>TC1</td>
<td>Definition of default-initialization</td>
<td class="full" align="center">Duplicate of <a href="#178">178</a></td>
</tr>
<tr id="36">
<td><a href="https://cplusplus.github.io/CWG/issues/36.html">36</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>CD6</td>
<td><I>using-declaration</I>s in multiple-declaration contexts</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="37">
<td><a href="https://cplusplus.github.io/CWG/issues/37.html">37</a></td>
+ <td>[<a href="https://wg21.link/except.uncaught">except.uncaught</a>]</td>
<td>NAD</td>
<td>When is uncaught_exception() true?</td>
<td class="unknown-superseded" align="center">Superseded by <a href="#475">475</a></td>
</tr>
<tr id="38">
<td><a href="https://cplusplus.github.io/CWG/issues/38.html">38</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>TC1</td>
<td>Explicit template arguments and operator functions</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="39">
<td><a href="https://cplusplus.github.io/CWG/issues/39.html">39</a></td>
+ <td>[<a href="https://wg21.link/class.member.lookup">class.member.lookup</a>]</td>
<td>CD1</td>
<td>Conflicting ambiguity rules</td>
<td class="none" align="center">No</td>
</tr>
<tr id="40">
<td><a href="https://cplusplus.github.io/CWG/issues/40.html">40</a></td>
+ <td>[<a href="https://wg21.link/dcl.meaning">dcl.meaning</a>]</td>
<td>TC1</td>
<td>Syntax of <I>declarator-id</I></td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="41">
<td><a href="https://cplusplus.github.io/CWG/issues/41.html">41</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.unqual">basic.lookup.unqual</a>]</td>
<td>TC1</td>
<td>Clarification of lookup of names after declarator-id</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="42">
<td><a href="https://cplusplus.github.io/CWG/issues/42.html">42</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.class">basic.scope.class</a>]</td>
<td>NAD</td>
<td>Redefining names from base classes</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="43">
<td><a href="https://cplusplus.github.io/CWG/issues/43.html">43</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>TC1</td>
<td>Copying base classes (PODs) using memcpy</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="44">
<td><a href="https://cplusplus.github.io/CWG/issues/44.html">44</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>CD1</td>
<td>Member specializations</td>
<td class="partial-superseded" align="center">Superseded by <a href="#727">727</a></td>
</tr>
<tr id="45">
<td><a href="https://cplusplus.github.io/CWG/issues/45.html">45</a></td>
+ <td>[<a href="https://wg21.link/class.access.nest">class.access.nest</a>]</td>
<td>CD1</td>
<td>Access to nested classes</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="46">
<td><a href="https://cplusplus.github.io/CWG/issues/46.html">46</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>NAD</td>
<td>Explicit instantiation of member templates</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="47">
<td><a href="https://cplusplus.github.io/CWG/issues/47.html">47</a></td>
+ <td>[<a href="https://wg21.link/temp.friend">temp.friend</a>]</td>
<td>NAD</td>
<td>Template friend issues</td>
<td class="full-superseded" align="center">Superseded by <a href="#329">329</a></td>
</tr>
<tr id="48">
<td><a href="https://cplusplus.github.io/CWG/issues/48.html">48</a></td>
+ <td>[<a href="https://wg21.link/class.static.data">class.static.data</a>]</td>
<td>TC1</td>
<td>Definitions of unused static members</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="49">
<td><a href="https://cplusplus.github.io/CWG/issues/49.html">49</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>TC1</td>
<td>Restriction on non-type, non-value template arguments</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="50">
<td><a href="https://cplusplus.github.io/CWG/issues/50.html">50</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>NAD</td>
<td>Converting pointer to incomplete type to same type</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="51">
<td><a href="https://cplusplus.github.io/CWG/issues/51.html">51</a></td>
+ <td>[<a href="https://wg21.link/over.match.best">over.match.best</a>]</td>
<td>TC1</td>
<td>Overloading and user-defined conversions</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="52">
<td><a href="https://cplusplus.github.io/CWG/issues/52.html">52</a></td>
+ <td>[<a href="https://wg21.link/expr.ref">expr.ref</a>]</td>
<td>TC1</td>
<td>Non-static members, member selection and access checking</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="53">
<td><a href="https://cplusplus.github.io/CWG/issues/53.html">53</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>TC1</td>
<td>Lvalue-to-rvalue conversion before certain static_casts</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="54">
<td><a href="https://cplusplus.github.io/CWG/issues/54.html">54</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>CD1</td>
<td>Static_cast from private base to derived class</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="55">
<td><a href="https://cplusplus.github.io/CWG/issues/55.html">55</a></td>
+ <td>[<a href="https://wg21.link/expr.add">expr.add</a>]</td>
<td>NAD</td>
<td>Adding/subtracting pointer and enumeration value</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="56">
<td><a href="https://cplusplus.github.io/CWG/issues/56.html">56</a></td>
+ <td>[<a href="https://wg21.link/dcl.typedef">dcl.typedef</a>]</td>
<td>TC1</td>
<td>Redeclaring typedefs within classes</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="57">
<td><a href="https://cplusplus.github.io/CWG/issues/57.html">57</a></td>
+ <td>[<a href="https://wg21.link/class.union">class.union</a>]</td>
<td>open</td>
<td>Empty unions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="58">
<td><a href="https://cplusplus.github.io/CWG/issues/58.html">58</a></td>
+ <td>[<a href="https://wg21.link/class.bit">class.bit</a>]</td>
<td>CD1</td>
<td>Signedness of bit fields of enum type</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="59">
<td><a href="https://cplusplus.github.io/CWG/issues/59.html">59</a></td>
+ <td>[<a href="https://wg21.link/over.match.copy">over.match.copy</a>]</td>
<td>TC1</td>
<td>Clarification of overloading and UDC to reference type</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="60">
<td><a href="https://cplusplus.github.io/CWG/issues/60.html">60</a></td>
+ <td>[<a href="https://wg21.link/over.ics.ref">over.ics.ref</a>]</td>
<td>CD1</td>
<td>Reference binding and valid conversion sequences</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="61">
<td><a href="https://cplusplus.github.io/CWG/issues/61.html">61</a></td>
+ <td>[<a href="https://wg21.link/over.over">over.over</a>]</td>
<td>NAD</td>
<td>Address of static member function "<TT>&amp;p-&gt;f</TT>"</td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="62">
<td><a href="https://cplusplus.github.io/CWG/issues/62.html">62</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.type">temp.arg.type</a>]</td>
<td>CD1</td>
<td>Unnamed members of classes used as type parameters</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="63">
<td><a href="https://cplusplus.github.io/CWG/issues/63.html">63</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>CD1</td>
<td>Class instantiation from pointer conversion to void*, null and self</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="64">
<td><a href="https://cplusplus.github.io/CWG/issues/64.html">64</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>TC1</td>
<td>Partial ordering to disambiguate explicit specialization</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="65">
<td><a href="https://cplusplus.github.io/CWG/issues/65.html">65</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>TC1</td>
<td>Typo in default argument example</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="66">
<td><a href="https://cplusplus.github.io/CWG/issues/66.html">66</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>NAD</td>
<td>Visibility of default args vs overloads added after using-declaration</td>
<td class="none" align="center">No</td>
</tr>
<tr id="67">
<td><a href="https://cplusplus.github.io/CWG/issues/67.html">67</a></td>
+ <td>[<a href="https://wg21.link/class.static">class.static</a>]</td>
<td>TC1</td>
<td>Evaluation of left side of object-expression</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="68">
<td><a href="https://cplusplus.github.io/CWG/issues/68.html">68</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.elab">dcl.type.elab</a>]</td>
<td>TC1</td>
<td>Grammar does not allow "friend class A&lt;int&gt;;"</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="69">
<td><a href="https://cplusplus.github.io/CWG/issues/69.html">69</a></td>
+ <td>[<a href="https://wg21.link/dcl.stc">dcl.stc</a>]</td>
<td>TC1</td>
<td>Storage class specifiers on template declarations</td>
<td class="full" align="center">Clang 9</td>
</tr>
<tr id="70">
<td><a href="https://cplusplus.github.io/CWG/issues/70.html">70</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>CD1</td>
<td>Is an array bound a nondeduced context?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="71">
<td><a href="https://cplusplus.github.io/CWG/issues/71.html">71</a></td>
+ <td>[<a href="https://wg21.link/expr">expr</a>]</td>
<td>NAD</td>
<td>Incorrect cross reference</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="72">
<td><a href="https://cplusplus.github.io/CWG/issues/72.html">72</a></td>
+ <td>[<a href="https://wg21.link/temp">temp</a>]</td>
<td>dup</td>
<td>Linkage and storage class specifiers for templates</td>
<td class="full" align="center">Duplicate of <a href="#69">69</a></td>
</tr>
<tr id="73">
<td><a href="https://cplusplus.github.io/CWG/issues/73.html">73</a></td>
+ <td>[<a href="https://wg21.link/expr.eq">expr.eq</a>]</td>
<td>TC1</td>
<td>Pointer equality</td>
<td class="full-superseded" align="center">Superseded by <a href="#1652">1652</a></td>
</tr>
<tr id="74">
<td><a href="https://cplusplus.github.io/CWG/issues/74.html">74</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>TC1</td>
<td>Enumeration value in direct-new-declarator</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="75">
<td><a href="https://cplusplus.github.io/CWG/issues/75.html">75</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>TC1</td>
<td>In-class initialized members must be const</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="76">
<td><a href="https://cplusplus.github.io/CWG/issues/76.html">76</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.cv">dcl.type.cv</a>]</td>
<td>TC1</td>
<td>Are const volatile variables considered "constant expressions"?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="77">
<td><a href="https://cplusplus.github.io/CWG/issues/77.html">77</a></td>
+ <td>[<a href="https://wg21.link/class.friend">class.friend</a>]</td>
<td>CD1</td>
<td>The definition of friend does not allow nested classes to be friends</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="78">
<td><a href="https://cplusplus.github.io/CWG/issues/78.html">78</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD1</td>
<td>Section 8.5 paragraph 9 should state it only applies to non-static objects</td>
<td class="none" align="center">Superseded by <a href="#????">????</a></td>
</tr>
<tr id="79">
<td><a href="https://cplusplus.github.io/CWG/issues/79.html">79</a></td>
+ <td>[<a href="https://wg21.link/new.delete.placement">new.delete.placement</a>]</td>
<td>dup</td>
<td>Alignment and placement new</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="80">
<td><a href="https://cplusplus.github.io/CWG/issues/80.html">80</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>TC1</td>
<td>Class members with same name as class</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="81">
<td><a href="https://cplusplus.github.io/CWG/issues/81.html">81</a></td>
+ <td>[<a href="https://wg21.link/diff">diff</a>]</td>
<td>NAD</td>
<td>Null pointers and C compatibility</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="82">
<td><a href="https://cplusplus.github.io/CWG/issues/82.html">82</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>dup</td>
<td>Definition of "using" a constant expression</td>
<td class="full" align="center">Duplicate of <a href="#48">48</a></td>
</tr>
<tr id="83">
<td><a href="https://cplusplus.github.io/CWG/issues/83.html">83</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>TC1</td>
<td>Overloading and deprecated conversion of string literal</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="84">
<td><a href="https://cplusplus.github.io/CWG/issues/84.html">84</a></td>
+ <td>[<a href="https://wg21.link/over.best.ics">over.best.ics</a>]</td>
<td>TC1</td>
<td>Overloading and conversion loophole used by <TT>auto_ptr</TT></td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="85">
<td><a href="https://cplusplus.github.io/CWG/issues/85.html">85</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.elab">basic.lookup.elab</a>]</td>
<td>TC1</td>
<td>Redeclaration of member class</td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="86">
<td><a href="https://cplusplus.github.io/CWG/issues/86.html">86</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>CD1</td>
<td>Lifetime of temporaries in query expressions</td>
<td class="full" align="center">Duplicate of <a href="#446">446</a></td>
</tr>
<tr id="87">
<td><a href="https://cplusplus.github.io/CWG/issues/87.html">87</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>CD1</td>
<td>Exception specifications on function parameters</td>
<td class="none" align="center">No</td>
</tr>
<tr id="88">
<td><a href="https://cplusplus.github.io/CWG/issues/88.html">88</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>NAD</td>
<td>Specialization of member constant templates</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="89">
<td><a href="https://cplusplus.github.io/CWG/issues/89.html">89</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>TC1</td>
<td>Object lifetime does not account for reference rebinding</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="90">
<td><a href="https://cplusplus.github.io/CWG/issues/90.html">90</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>TC1</td>
<td>Should the enclosing class be an "associated class" too?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="91">
<td><a href="https://cplusplus.github.io/CWG/issues/91.html">91</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>NAD</td>
<td>A union's associated types should include the union itself</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="92">
<td><a href="https://cplusplus.github.io/CWG/issues/92.html">92</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>CD4</td>
<td>Should <I>exception-specification</I>s be part of the type system?</td>
<td class="full" align="center">Clang 4 (C++17 onwards)</td>
</tr>
<tr id="93">
<td><a href="https://cplusplus.github.io/CWG/issues/93.html">93</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>TC1</td>
<td>Missing word in 3.8 <U>basic.life</U> paragraph 2</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="94">
<td><a href="https://cplusplus.github.io/CWG/issues/94.html">94</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>TC1</td>
<td>Inconsistencies in the descriptions of constant expressions</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="95">
<td><a href="https://cplusplus.github.io/CWG/issues/95.html">95</a></td>
+ <td>[<a href="https://wg21.link/namespace.memdef">namespace.memdef</a>]</td>
<td>NAD</td>
<td>Elaborated type specifiers referencing names declared in friend decls</td>
<td class="full" align="center">Clang 3.3</td>
</tr>
<tr id="96">
<td><a href="https://cplusplus.github.io/CWG/issues/96.html">96</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>C++11</td>
<td>Syntactic disambiguation using the <TT>template</TT> keyword</td>
<td class="na" align="center">Superseded by <a href="https://wg21.link/P1787">P1787</a></td>
</tr>
<tr id="97">
<td><a href="https://cplusplus.github.io/CWG/issues/97.html">97</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>NAD</td>
<td>Use of bool constants in integral constant expressions</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="98">
<td><a href="https://cplusplus.github.io/CWG/issues/98.html">98</a></td>
+ <td>[<a href="https://wg21.link/except">except</a>]</td>
<td>TC1</td>
<td>Branching into try block</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="99">
<td><a href="https://cplusplus.github.io/CWG/issues/99.html">99</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>NAD</td>
<td>Partial ordering, references and cv-qualifiers</td>
<td class="full-superseded" align="center">Superseded by <a href="#214">214</a></td>
</tr>
<tr id="100">
<td><a href="https://cplusplus.github.io/CWG/issues/100.html">100</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.nontype">temp.arg.nontype</a>]</td>
<td>TC1</td>
<td>Clarify why string literals are not allowed as template arguments</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="101">
<td><a href="https://cplusplus.github.io/CWG/issues/101.html">101</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>TC1</td>
<td>Redeclaration of extern "C" names via using-declarations</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="102">
<td><a href="https://cplusplus.github.io/CWG/issues/102.html">102</a></td>
+ <td>[<a href="https://wg21.link/over.match.oper">over.match.oper</a>]</td>
<td>NAD</td>
<td>Operator lookup rules do not work well with parts of the library</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="103">
<td><a href="https://cplusplus.github.io/CWG/issues/103.html">103</a></td>
+ <td>[<a href="https://wg21.link/namespace.udir">namespace.udir</a>]</td>
<td>TC1</td>
<td>Is it <I>extended-namespace-definition</I> or <I>extension-namespace-definition</I> ?</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="104">
<td><a href="https://cplusplus.github.io/CWG/issues/104.html">104</a></td>
+ <td>[<a href="https://wg21.link/except.throw">except.throw</a>]</td>
<td>NAD</td>
<td>Destroying the exception temp when no handler is found</td>
<td class="na" align="center">N/A (Library DR)</td>
</tr>
<tr id="105">
<td><a href="https://cplusplus.github.io/CWG/issues/105.html">105</a></td>
+ <td>[<a href="https://wg21.link/temp">temp</a>]</td>
<td>TC1</td>
<td>Meaning of "template function"</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="106">
<td><a href="https://cplusplus.github.io/CWG/issues/106.html">106</a></td>
+ <td>[<a href="https://wg21.link/unknown">unknown</a>]</td>
<td>CD1</td>
<td>Creating references to references during template deduction/instantiation</td>
<td class="full-superseded" align="center">Superseded by <a href="#540">540</a></td>
</tr>
<tr id="107">
<td><a href="https://cplusplus.github.io/CWG/issues/107.html">107</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>NAD</td>
<td>Linkage of operator functions</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="108">
<td><a href="https://cplusplus.github.io/CWG/issues/108.html">108</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>TC1</td>
<td>Are classes nested in templates dependent?</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="109">
<td><a href="https://cplusplus.github.io/CWG/issues/109.html">109</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>NAD</td>
<td>Allowing <TT>::template</TT> in <I>using-declaration</I>s</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="110">
<td><a href="https://cplusplus.github.io/CWG/issues/110.html">110</a></td>
+ <td>[<a href="https://wg21.link/temp">temp</a>]</td>
<td>CD6</td>
<td>Can template functions and classes be declared in the same scope?</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="111">
<td><a href="https://cplusplus.github.io/CWG/issues/111.html">111</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>NAD</td>
<td>Copy constructors and cv-qualifiers</td>
<td class="full" align="center">Duplicate of <a href="#535">535</a></td>
</tr>
<tr id="112">
<td><a href="https://cplusplus.github.io/CWG/issues/112.html">112</a></td>
+ <td>[<a href="https://wg21.link/dcl.array">dcl.array</a>]</td>
<td>CD1</td>
<td>Array types and cv-qualifiers</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="113">
<td><a href="https://cplusplus.github.io/CWG/issues/113.html">113</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>CD1</td>
<td>Visibility of called function</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="114">
<td><a href="https://cplusplus.github.io/CWG/issues/114.html">114</a></td>
+ <td>[<a href="https://wg21.link/temp.mem">temp.mem</a>]</td>
<td>NAD</td>
<td>Virtual overriding by template member function specializations</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="115">
<td><a href="https://cplusplus.github.io/CWG/issues/115.html">115</a></td>
+ <td>[<a href="https://wg21.link/over.over">over.over</a>]</td>
<td>CD1</td>
<td>Address of template-id</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="116">
<td><a href="https://cplusplus.github.io/CWG/issues/116.html">116</a></td>
+ <td>[<a href="https://wg21.link/temp.over.link">temp.over.link</a>]</td>
<td>TC1</td>
<td>Equivalent and functionally-equivalent function templates</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="117">
<td><a href="https://cplusplus.github.io/CWG/issues/117.html">117</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>NAD</td>
<td>Timing of destruction of temporaries</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="118">
<td><a href="https://cplusplus.github.io/CWG/issues/118.html">118</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>CD1</td>
<td>Calls via pointers to virtual member functions</td>
<td class="full" align="center">Yes</td>
</tr>
<tr id="119">
<td><a href="https://cplusplus.github.io/CWG/issues/119.html">119</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>CD1</td>
<td>Object lifetime and aggregate initialization</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="120">
<td><a href="https://cplusplus.github.io/CWG/issues/120.html">120</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>TC1</td>
<td>Nonexistent non-terminal <I>qualified-name</I></td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="121">
<td><a href="https://cplusplus.github.io/CWG/issues/121.html">121</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>TC1</td>
<td>Dependent type names with non-dependent <I>nested-name-specifier</I>s</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="122">
<td><a href="https://cplusplus.github.io/CWG/issues/122.html">122</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.general">expr.prim.general</a>]</td>
<td>CD1</td>
<td><I>template-id</I>s as <I>unqualified-id</I>s</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="123">
<td><a href="https://cplusplus.github.io/CWG/issues/123.html">123</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.general">expr.prim.general</a>]</td>
<td>TC1</td>
<td>Bad cross-reference</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="124">
<td><a href="https://cplusplus.github.io/CWG/issues/124.html">124</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>CD1</td>
<td>Lifetime of temporaries in default initialization of class arrays</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="125">
<td><a href="https://cplusplus.github.io/CWG/issues/125.html">125</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.general">expr.prim.general</a>]</td>
<td>CD1</td>
<td>Ambiguity in <TT>friend</TT> declaration syntax</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="126">
<td><a href="https://cplusplus.github.io/CWG/issues/126.html">126</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>TC1</td>
<td>Exception specifications and <TT>const</TT></td>
<td class="partial" align="center">Partial</td>
</tr>
<tr id="127">
<td><a href="https://cplusplus.github.io/CWG/issues/127.html">127</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>TC1</td>
<td>Ambiguity in description of matching deallocation function</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="128">
<td><a href="https://cplusplus.github.io/CWG/issues/128.html">128</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>TC1</td>
<td>Casting between enum types</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="129">
<td><a href="https://cplusplus.github.io/CWG/issues/129.html">129</a></td>
+ <td>[<a href="https://wg21.link/intro.execution">intro.execution</a>]</td>
<td>CD3</td>
<td>Stability of uninitialized auto variables</td>
<td class="full" align="center">Duplicate of <a href="#616">616</a></td>
</tr>
<tr id="130">
<td><a href="https://cplusplus.github.io/CWG/issues/130.html">130</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>NAD</td>
<td>Sequence points and <I>new-expression</I>s</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="131">
<td><a href="https://cplusplus.github.io/CWG/issues/131.html">131</a></td>
+ <td>[<a href="https://wg21.link/extendid">extendid</a>]</td>
<td>TC1</td>
<td>Typo in Lao characters</td>
<td class="na" align="center">Superseded by <a href="https://wg21.link/P1949">P1949</a></td>
</tr>
<tr id="132">
<td><a href="https://cplusplus.github.io/CWG/issues/132.html">132</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>NAD</td>
<td>Local types and linkage</td>
<td class="none" align="center">No</td>
</tr>
<tr id="133">
<td><a href="https://cplusplus.github.io/CWG/issues/133.html">133</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>dup</td>
<td>Exception specifications and checking</td>
<td class="none" align="center">Duplicate of <a href="#87">87</a></td>
</tr>
<tr id="134">
<td><a href="https://cplusplus.github.io/CWG/issues/134.html">134</a></td>
+ <td>[<a href="https://wg21.link/temp">temp</a>]</td>
<td>TC1</td>
<td>Template classes and <I>declarator-id</I>s</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="135">
<td><a href="https://cplusplus.github.io/CWG/issues/135.html">135</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>TC1</td>
<td>Class type in in-class member function definitions</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="136">
<td><a href="https://cplusplus.github.io/CWG/issues/136.html">136</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>CD1</td>
<td>Default arguments and friend declarations</td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="137">
<td><a href="https://cplusplus.github.io/CWG/issues/137.html">137</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>TC1</td>
<td><TT>static_cast</TT> of <I>cv</I> <TT>void*</TT></td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="138">
<td><a href="https://cplusplus.github.io/CWG/issues/138.html">138</a></td>
+ <td>[<a href="https://wg21.link/namespace.memdef">namespace.memdef</a>]</td>
<td>CD6</td>
<td>Friend declaration name lookup</td>
<td class="partial" align="center">Partial</td>
</tr>
<tr id="139">
<td><a href="https://cplusplus.github.io/CWG/issues/139.html">139</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.unqual">basic.lookup.unqual</a>]</td>
<td>CD1</td>
<td>Error in <TT>friend</TT> lookup example</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="140">
<td><a href="https://cplusplus.github.io/CWG/issues/140.html">140</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>CD1</td>
<td>Agreement of parameter declarations</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="141">
<td><a href="https://cplusplus.github.io/CWG/issues/141.html">141</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.classref">basic.lookup.classref</a>]</td>
<td>CD1</td>
<td>Non-member function templates in member access expressions</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="142">
<td><a href="https://cplusplus.github.io/CWG/issues/142.html">142</a></td>
+ <td>[<a href="https://wg21.link/class.access.base">class.access.base</a>]</td>
<td>TC1</td>
<td>Injection-related errors in access example</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="143">
<td><a href="https://cplusplus.github.io/CWG/issues/143.html">143</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>CD1</td>
<td>Friends and Koenig lookup</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="144">
<td><a href="https://cplusplus.github.io/CWG/issues/144.html">144</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.elab">dcl.type.elab</a>]</td>
<td>open</td>
<td>Position of <TT>friend</TT> specifier</td>
<td align="center">Not resolved</td>
</tr>
<tr id="145">
<td><a href="https://cplusplus.github.io/CWG/issues/145.html">145</a></td>
+ <td>[<a href="https://wg21.link/depr.impldec">depr.impldec</a>]</td>
<td>TC1</td>
<td>Deprecation of prefix <TT>++</TT></td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="146">
<td><a href="https://cplusplus.github.io/CWG/issues/146.html">146</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>open</td>
<td>Floating-point zero</td>
<td align="center">Not resolved</td>
</tr>
<tr id="147">
<td><a href="https://cplusplus.github.io/CWG/issues/147.html">147</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.general">expr.prim.general</a>]</td>
<td>TC1</td>
<td>Naming the constructor</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="148">
<td><a href="https://cplusplus.github.io/CWG/issues/148.html">148</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>TC1</td>
<td>POD classes and pointers to members</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="149">
<td><a href="https://cplusplus.github.io/CWG/issues/149.html">149</a></td>
+ <td>[<a href="https://wg21.link/conv.ptr">conv.ptr</a>]</td>
<td>TC1</td>
<td>Accessibility and ambiguity</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="150">
<td><a href="https://cplusplus.github.io/CWG/issues/150.html">150</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.template">temp.arg.template</a>]</td>
<td>C++17</td>
<td>Template template parameters and default arguments</td>
<td class="full" align="center">Clang 19</td>
</tr>
<tr id="151">
<td><a href="https://cplusplus.github.io/CWG/issues/151.html">151</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>TC1</td>
<td>Terminology of zero-initialization</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="152">
<td><a href="https://cplusplus.github.io/CWG/issues/152.html">152</a></td>
+ <td>[<a href="https://wg21.link/class.conv.ctor">class.conv.ctor</a>]</td>
<td>TC1</td>
<td><TT>explicit</TT> copy constructors</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="153">
<td><a href="https://cplusplus.github.io/CWG/issues/153.html">153</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>TC1</td>
<td>Misleading wording (rank of conversion)</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="154">
<td><a href="https://cplusplus.github.io/CWG/issues/154.html">154</a></td>
+ <td>[<a href="https://wg21.link/dcl.stc">dcl.stc</a>]</td>
<td>NAD</td>
<td>Anonymous unions in unnamed namespaces</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="155">
<td><a href="https://cplusplus.github.io/CWG/issues/155.html">155</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>dup</td>
<td>Brace initializer for scalar</td>
<td class="full" align="center">Duplicate of <a href="#632">632</a></td>
</tr>
<tr id="156">
<td><a href="https://cplusplus.github.io/CWG/issues/156.html">156</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.classref">basic.lookup.classref</a>]</td>
<td>NAD</td>
<td>Name lookup for conversion functions</td>
<td class="partial-superseded" align="center">Superseded by <a href="#1111">1111</a></td>
</tr>
<tr class="open" id="157">
<td><a href="https://cplusplus.github.io/CWG/issues/157.html">157</a></td>
+ <td>[<a href="https://wg21.link/dcl.pre">dcl.pre</a>]</td>
<td>open</td>
<td>Omitted typedef declarator</td>
<td align="center">Not resolved</td>
</tr>
<tr id="158">
<td><a href="https://cplusplus.github.io/CWG/issues/158.html">158</a></td>
+ <td>[<a href="https://wg21.link/basic.lval">basic.lval</a>]</td>
<td>CD1</td>
<td>Aliasing and qualification conversions</td>
<td class="full" align="center">Yes</td>
</tr>
<tr id="159">
<td><a href="https://cplusplus.github.io/CWG/issues/159.html">159</a></td>
+ <td>[<a href="https://wg21.link/dcl.meaning">dcl.meaning</a>]</td>
<td>TC1</td>
<td>Namespace qualification in declarators</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="160">
<td><a href="https://cplusplus.github.io/CWG/issues/160.html">160</a></td>
+ <td>[<a href="https://wg21.link/dcl.ambig.res">dcl.ambig.res</a>]</td>
<td>CD1</td>
<td>Missing <TT>std::</TT> qualification</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="161">
<td><a href="https://cplusplus.github.io/CWG/issues/161.html">161</a></td>
+ <td>[<a href="https://wg21.link/class.protected">class.protected</a>]</td>
<td>TC1</td>
<td>Access to protected nested type</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="162">
<td><a href="https://cplusplus.github.io/CWG/issues/162.html">162</a></td>
+ <td>[<a href="https://wg21.link/over.match.call">over.match.call</a>]</td>
<td>CD1</td>
<td>(<TT>&amp;C::f)()</TT> with nonstatic members</td>
<td class="full" align="center">Clang 19</td>
</tr>
<tr id="163">
<td><a href="https://cplusplus.github.io/CWG/issues/163.html">163</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>TC1</td>
<td>Description of subaggregate initializer</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="164">
<td><a href="https://cplusplus.github.io/CWG/issues/164.html">164</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>TC1</td>
<td>Overlap between Koenig and normal lookup</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="165">
<td><a href="https://cplusplus.github.io/CWG/issues/165.html">165</a></td>
+ <td>[<a href="https://wg21.link/namespace.memdef">namespace.memdef</a>]</td>
<td>NAD</td>
<td>Definitions of friends and block-scope externs</td>
<td class="none" align="center">No</td>
</tr>
<tr id="166">
<td><a href="https://cplusplus.github.io/CWG/issues/166.html">166</a></td>
+ <td>[<a href="https://wg21.link/namespace.memdef">namespace.memdef</a>]</td>
<td>TC1</td>
<td>Friend declarations of <I>template-id</I>s</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="167">
<td><a href="https://cplusplus.github.io/CWG/issues/167.html">167</a></td>
+ <td>[<a href="https://wg21.link/depr.static">depr.static</a>]</td>
<td>NAD</td>
<td>Deprecating static functions</td>
<td class="unknown-superseded" align="center">Superseded by <a href="#1012">1012</a></td>
</tr>
<tr id="168">
<td><a href="https://cplusplus.github.io/CWG/issues/168.html">168</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>NAD</td>
<td>C linkage for static member functions</td>
<td class="none" align="center">No</td>
</tr>
<tr id="169">
<td><a href="https://cplusplus.github.io/CWG/issues/169.html">169</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>NAD</td>
<td><I>template-id</I>s in <I>using-declaration</I>s</td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="170">
<td><a href="https://cplusplus.github.io/CWG/issues/170.html">170</a></td>
+ <td>[<a href="https://wg21.link/conv.mem">conv.mem</a>]</td>
<td>CD7</td>
<td>Pointer-to-member conversions</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="171">
<td><a href="https://cplusplus.github.io/CWG/issues/171.html">171</a></td>
+ <td>[<a href="https://wg21.link/basic.namespace">basic.namespace</a>]</td>
<td>TC1</td>
<td>Global namespace scope</td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="172">
<td><a href="https://cplusplus.github.io/CWG/issues/172.html">172</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>CD1</td>
<td>Unsigned int as underlying type of enum</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="173">
<td><a href="https://cplusplus.github.io/CWG/issues/173.html">173</a></td>
+ <td>[<a href="https://wg21.link/lex.charset">lex.charset</a>]</td>
<td>TC1</td>
<td>Constraints on execution character set</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="174">
<td><a href="https://cplusplus.github.io/CWG/issues/174.html">174</a></td>
+ <td>[<a href="https://wg21.link/depr.static">depr.static</a>]</td>
<td>NAD</td>
<td>Undeprecating global static</td>
<td class="unknown-superseded" align="center">Superseded by <a href="#1012">1012</a></td>
</tr>
<tr id="175">
<td><a href="https://cplusplus.github.io/CWG/issues/175.html">175</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>CD1</td>
<td>Class name injection and base name access</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="176">
<td><a href="https://cplusplus.github.io/CWG/issues/176.html">176</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>TC1</td>
<td>Name injection and templates</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="177">
<td><a href="https://cplusplus.github.io/CWG/issues/177.html">177</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD1</td>
<td>Lvalues vs rvalues in copy-initialization</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="178">
<td><a href="https://cplusplus.github.io/CWG/issues/178.html">178</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>TC1</td>
<td>More on value-initialization</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="179">
<td><a href="https://cplusplus.github.io/CWG/issues/179.html">179</a></td>
+ <td>[<a href="https://wg21.link/expr.add">expr.add</a>]</td>
<td>TC1</td>
<td>Function pointers and subtraction</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="180">
<td><a href="https://cplusplus.github.io/CWG/issues/180.html">180</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>CD1</td>
<td><TT>typename</TT> and elaborated types</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="181">
<td><a href="https://cplusplus.github.io/CWG/issues/181.html">181</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>TC1</td>
<td>Errors in template <I>template-parameter</I> example</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="182">
<td><a href="https://cplusplus.github.io/CWG/issues/182.html">182</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>NAD</td>
<td>Access checking on explicit specializations</td>
<td class="full" align="center">Clang 14</td>
</tr>
<tr id="183">
<td><a href="https://cplusplus.github.io/CWG/issues/183.html">183</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>TC1</td>
<td><TT>typename</TT> in explicit specializations</td>
<td class="full-superseded" align="center">Superseded by <a href="#382">382</a></td>
</tr>
<tr id="184">
<td><a href="https://cplusplus.github.io/CWG/issues/184.html">184</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>CD1</td>
<td>Default arguments in template <I>template-parameter</I>s</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="185">
<td><a href="https://cplusplus.github.io/CWG/issues/185.html">185</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>TC1</td>
<td>"Named" temporaries and copy elision</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="186">
<td><a href="https://cplusplus.github.io/CWG/issues/186.html">186</a></td>
+ <td>[<a href="https://wg21.link/temp.local">temp.local</a>]</td>
<td>open</td>
<td>Name hiding and template <I>template-parameter</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr id="187">
<td><a href="https://cplusplus.github.io/CWG/issues/187.html">187</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>TC1</td>
<td>Scope of template parameter names</td>
<td class="full-superseded" align="center">Superseded by <a href="#481">481</a></td>
</tr>
<tr id="188">
<td><a href="https://cplusplus.github.io/CWG/issues/188.html">188</a></td>
+ <td>[<a href="https://wg21.link/expr.comma">expr.comma</a>]</td>
<td>TC1</td>
<td>Comma operator and rvalue conversion</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="189">
<td><a href="https://cplusplus.github.io/CWG/issues/189.html">189</a></td>
+ <td>[<a href="https://wg21.link/lex.operators">lex.operators</a>]</td>
<td>open</td>
<td>Definition of <I>operator</I> and <I>punctuator</I></td>
<td align="center">Not resolved</td>
</tr>
<tr id="190">
<td><a href="https://cplusplus.github.io/CWG/issues/190.html">190</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>TC1</td>
<td>Layout-compatible POD-struct types</td>
<td class="full" align="center">Clang 19</td>
</tr>
<tr id="191">
<td><a href="https://cplusplus.github.io/CWG/issues/191.html">191</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.unqual">basic.lookup.unqual</a>]</td>
<td>CD6</td>
<td>Name lookup does not handle complex nesting</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="192">
<td><a href="https://cplusplus.github.io/CWG/issues/192.html">192</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.unqual">basic.lookup.unqual</a>]</td>
<td>NAD</td>
<td>Name lookup in parameters</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="193">
<td><a href="https://cplusplus.github.io/CWG/issues/193.html">193</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>TC1</td>
<td>Order of destruction of local automatics of destructor</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="194">
<td><a href="https://cplusplus.github.io/CWG/issues/194.html">194</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>TC1</td>
<td>Identifying constructors</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="195">
<td><a href="https://cplusplus.github.io/CWG/issues/195.html">195</a></td>
+ <td>[<a href="https://wg21.link/expr.reinterpret.cast">expr.reinterpret.cast</a>]</td>
<td>CD1</td>
<td>Converting between function and object pointers</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="196">
<td><a href="https://cplusplus.github.io/CWG/issues/196.html">196</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>open</td>
<td>Arguments to deallocation functions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="197">
<td><a href="https://cplusplus.github.io/CWG/issues/197.html">197</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.candidate">temp.dep.candidate</a>]</td>
<td>CD1</td>
<td>Issues with two-stage lookup of dependent names</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="198">
<td><a href="https://cplusplus.github.io/CWG/issues/198.html">198</a></td>
+ <td>[<a href="https://wg21.link/class.local">class.local</a>]</td>
<td>CD1</td>
<td>Definition of "use" in local and nested classes</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="199">
<td><a href="https://cplusplus.github.io/CWG/issues/199.html">199</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>CD1</td>
<td>Order of destruction of temporaries</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="200">
<td><a href="https://cplusplus.github.io/CWG/issues/200.html">200</a></td>
+ <td>[<a href="https://wg21.link/temp.func.order">temp.func.order</a>]</td>
<td>dup</td>
<td>Partial ordering and explicit arguments</td>
<td class="full" align="center">Duplicate of <a href="#214">214</a></td>
</tr>
<tr id="201">
<td><a href="https://cplusplus.github.io/CWG/issues/201.html">201</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>CD1</td>
<td>Order of destruction of temporaries in initializers</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="202">
<td><a href="https://cplusplus.github.io/CWG/issues/202.html">202</a></td>
+ <td>[<a href="https://wg21.link/over.over">over.over</a>]</td>
<td>TC1</td>
<td>Use of overloaded function name</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="203">
<td><a href="https://cplusplus.github.io/CWG/issues/203.html">203</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.op">expr.unary.op</a>]</td>
<td>NAD</td>
<td>Type of address-of-member expression</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="204">
<td><a href="https://cplusplus.github.io/CWG/issues/204.html">204</a></td>
+ <td>[<a href="https://wg21.link/temp">temp</a>]</td>
<td>CD1</td>
<td>Exported class templates</td>
<td class="full-superseded" align="center">Superseded by <a href="#820">820</a></td>
</tr>
<tr class="open" id="205">
<td><a href="https://cplusplus.github.io/CWG/issues/205.html">205</a></td>
+ <td>[<a href="https://wg21.link/temp">temp</a>]</td>
<td>drafting</td>
<td>Templates and static data members</td>
<td align="center">Not resolved</td>
</tr>
<tr id="206">
<td><a href="https://cplusplus.github.io/CWG/issues/206.html">206</a></td>
+ <td>[<a href="https://wg21.link/temp.nondep">temp.nondep</a>]</td>
<td>TC1</td>
<td>Semantic constraints on non-dependent names</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="207">
<td><a href="https://cplusplus.github.io/CWG/issues/207.html">207</a></td>
+ <td>[<a href="https://wg21.link/class.access.base">class.access.base</a>]</td>
<td>CD1</td>
<td><I>using-declaration</I>s and protected access</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="208">
<td><a href="https://cplusplus.github.io/CWG/issues/208.html">208</a></td>
+ <td>[<a href="https://wg21.link/except.throw">except.throw</a>]</td>
<td>CD1</td>
<td>Rethrowing exceptions in nested handlers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="209">
<td><a href="https://cplusplus.github.io/CWG/issues/209.html">209</a></td>
+ <td>[<a href="https://wg21.link/class.friend">class.friend</a>]</td>
<td>NAD</td>
- <td>Must friend declaration names be
-accessible?</td>
+ <td>Must friend declaration names be accessible?</td>
<td class="full" align="center">Clang 3.2</td>
</tr>
<tr id="210">
<td><a href="https://cplusplus.github.io/CWG/issues/210.html">210</a></td>
+ <td>[<a href="https://wg21.link/except.handle">except.handle</a>]</td>
<td>TC1</td>
<td>What is the type matched by an exception handler?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="211">
<td><a href="https://cplusplus.github.io/CWG/issues/211.html">211</a></td>
+ <td>[<a href="https://wg21.link/except">except</a>]</td>
<td>NAD</td>
<td>Constructors should not be allowed to return normally after an exception</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="212">
<td><a href="https://cplusplus.github.io/CWG/issues/212.html">212</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>CD4</td>
<td>Implicit instantiation is not described clearly enough</td>
<td class="full" align="center">Yes</td>
</tr>
<tr id="213">
<td><a href="https://cplusplus.github.io/CWG/issues/213.html">213</a></td>
+ <td>[<a href="https://wg21.link/temp.dep">temp.dep</a>]</td>
<td>TC1</td>
<td>Lookup in dependent base classes</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="214">
<td><a href="https://cplusplus.github.io/CWG/issues/214.html">214</a></td>
+ <td>[<a href="https://wg21.link/temp.func.order">temp.func.order</a>]</td>
<td>CD1</td>
<td>Partial ordering of function templates is underspecified</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="215">
<td><a href="https://cplusplus.github.io/CWG/issues/215.html">215</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>CD1</td>
<td>Template parameters are not allowed in <I>nested-name-specifier</I>s</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="216">
<td><a href="https://cplusplus.github.io/CWG/issues/216.html">216</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD1</td>
<td>Linkage of nameless class-scope enumeration types</td>
<td class="none" align="center">No</td>
</tr>
<tr id="217">
<td><a href="https://cplusplus.github.io/CWG/issues/217.html">217</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>TC1</td>
<td>Default arguments for non-template member functions of class templates</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="218">
<td><a href="https://cplusplus.github.io/CWG/issues/218.html">218</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>CD1</td>
<td>Specification of Koenig lookup</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="219">
<td><a href="https://cplusplus.github.io/CWG/issues/219.html">219</a></td>
+ <td>[<a href="https://wg21.link/except.terminate">except.terminate</a>]</td>
<td>NAD</td>
<td>Cannot defend against destructors that throw exceptions</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="220">
<td><a href="https://cplusplus.github.io/CWG/issues/220.html">220</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.deallocation">basic.stc.dynamic.deallocation</a>]</td>
<td>CD1</td>
<td>All deallocation functions should be required not to throw</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="221">
<td><a href="https://cplusplus.github.io/CWG/issues/221.html">221</a></td>
+ <td>[<a href="https://wg21.link/over.assign">over.assign</a>]</td>
<td>CD1</td>
<td>Must compound assignment operators be member functions?</td>
<td class="full" align="center">Clang 3.6</td>
</tr>
<tr id="222">
<td><a href="https://cplusplus.github.io/CWG/issues/222.html">222</a></td>
+ <td>[<a href="https://wg21.link/expr">expr</a>]</td>
<td>CD1</td>
<td>Sequence points and lvalue-returning operators</td>
<td class="full" align="center">Duplicate of <a href="#637">637</a></td>
</tr>
<tr id="223">
<td><a href="https://cplusplus.github.io/CWG/issues/223.html">223</a></td>
+ <td>[<a href="https://wg21.link/depr">depr</a>]</td>
<td>CD3</td>
<td>The meaning of deprecation</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="224">
<td><a href="https://cplusplus.github.io/CWG/issues/224.html">224</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>CD1</td>
<td>Definition of dependent names</td>
<td class="full" align="center">Clang 16</td>
</tr>
<tr id="225">
<td><a href="https://cplusplus.github.io/CWG/issues/225.html">225</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>NAD</td>
<td>Koenig lookup and fundamental types</td>
<td class="full" align="center">Yes</td>
</tr>
<tr id="226">
<td><a href="https://cplusplus.github.io/CWG/issues/226.html">226</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>CD1</td>
<td>Default template arguments for function templates</td>
<td class="none" align="center">No</td>
</tr>
<tr id="227">
<td><a href="https://cplusplus.github.io/CWG/issues/227.html">227</a></td>
+ <td>[<a href="https://wg21.link/stmt.select">stmt.select</a>]</td>
<td>TC1</td>
<td>How many scopes in an <TT>if</TT> statement?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="228">
<td><a href="https://cplusplus.github.io/CWG/issues/228.html">228</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>CD1</td>
<td>Use of <TT>template</TT> keyword with non-member templates</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="229">
<td><a href="https://cplusplus.github.io/CWG/issues/229.html">229</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial">temp.spec.partial</a>]</td>
<td>NAD</td>
<td>Partial specialization of function templates</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="230">
<td><a href="https://cplusplus.github.io/CWG/issues/230.html">230</a></td>
+ <td>[<a href="https://wg21.link/class.abstract">class.abstract</a>]</td>
<td>NAD</td>
<td>Calls to pure virtual functions</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="231">
<td><a href="https://cplusplus.github.io/CWG/issues/231.html">231</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.unqual">basic.lookup.unqual</a>]</td>
<td>NAD</td>
<td>Visibility of names after <I>using-directive</I>s</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="232">
<td><a href="https://cplusplus.github.io/CWG/issues/232.html">232</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.op">expr.unary.op</a>]</td>
<td>NAD</td>
<td>Is indirection through a null pointer undefined behavior?</td>
<td class="none" align="center">Duplicate of <a href="#2823">2823</a></td>
</tr>
<tr id="233">
<td><a href="https://cplusplus.github.io/CWG/issues/233.html">233</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD7</td>
<td>References vs pointers in UDC overload resolution</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="234">
<td><a href="https://cplusplus.github.io/CWG/issues/234.html">234</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>NAD</td>
<td>Reuse of base class subobjects</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="235">
<td><a href="https://cplusplus.github.io/CWG/issues/235.html">235</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>TC1</td>
<td>Assignment vs initialization</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="236">
<td><a href="https://cplusplus.github.io/CWG/issues/236.html">236</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>NAD</td>
<td>Explicit temporaries and integral constant expressions</td>
<td class="full" align="center">Clang 3.2</td>
</tr>
<tr id="237">
<td><a href="https://cplusplus.github.io/CWG/issues/237.html">237</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>CD1</td>
<td>Explicit instantiation and base class members</td>
<td class="full" align="center">Duplicate of <a href="#470">470</a></td>
</tr>
<tr id="238">
<td><a href="https://cplusplus.github.io/CWG/issues/238.html">238</a></td>
+ <td>[<a href="https://wg21.link/expr">expr</a>]</td>
<td>CD4</td>
<td>Precision and accuracy constraints on floating point</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="239">
<td><a href="https://cplusplus.github.io/CWG/issues/239.html">239</a></td>
+ <td>[<a href="https://wg21.link/over.call.func">over.call.func</a>]</td>
<td>CD1</td>
<td>Footnote 116 and Koenig lookup</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="240">
<td><a href="https://cplusplus.github.io/CWG/issues/240.html">240</a></td>
+ <td>[<a href="https://wg21.link/conv.lval">conv.lval</a>]</td>
<td>CD3</td>
<td>Uninitialized values and undefined behavior</td>
<td class="full" align="center">Duplicate of <a href="#616">616</a></td>
</tr>
<tr id="241">
<td><a href="https://cplusplus.github.io/CWG/issues/241.html">241</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.explicit">temp.arg.explicit</a>]</td>
<td>TC1</td>
<td>Error in example in 14.8.1</td>
<td class="full" align="center">Clang 9</td>
</tr>
<tr id="242">
<td><a href="https://cplusplus.github.io/CWG/issues/242.html">242</a></td>
+ <td>[<a href="https://wg21.link/expr.cast">expr.cast</a>]</td>
<td>CD4</td>
<td>Interpretation of old-style casts</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="243">
<td><a href="https://cplusplus.github.io/CWG/issues/243.html">243</a></td>
+ <td>[<a href="https://wg21.link/over.ics.user">over.ics.user</a>]</td>
<td>NAD</td>
<td>Weighting of conversion functions in direct-initialization</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="244">
<td><a href="https://cplusplus.github.io/CWG/issues/244.html">244</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>CD1</td>
<td>Destructor lookup</td>
<td class="full" align="center">Clang 11</td>
</tr>
<tr id="245">
<td><a href="https://cplusplus.github.io/CWG/issues/245.html">245</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.elab">basic.lookup.elab</a>]</td>
<td>CD1</td>
<td>Name lookup in <I>elaborated-type-specifier</I>s</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="246">
<td><a href="https://cplusplus.github.io/CWG/issues/246.html">246</a></td>
+ <td>[<a href="https://wg21.link/temp.arg">temp.arg</a>]</td>
<td>CD1</td>
<td>Jumps in <I>function-try-block</I> handlers</td>
<td class="full" align="center">Clang 3.2</td>
</tr>
<tr id="247">
<td><a href="https://cplusplus.github.io/CWG/issues/247.html">247</a></td>
+ <td>[<a href="https://wg21.link/over.over">over.over</a>]</td>
<td>NAD</td>
<td>Pointer-to-member casts and function overload resolution</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="248">
<td><a href="https://cplusplus.github.io/CWG/issues/248.html">248</a></td>
+ <td>[<a href="https://wg21.link/extendid">extendid</a>]</td>
<td>C++11</td>
<td>Identifier characters</td>
<td class="na" align="center">Superseded by <a href="https://wg21.link/P1949">P1949</a></td>
</tr>
<tr id="249">
<td><a href="https://cplusplus.github.io/CWG/issues/249.html">249</a></td>
+ <td>[<a href="https://wg21.link/temp.mem.func">temp.mem.func</a>]</td>
<td>TC1</td>
<td>What is a member function template?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="250">
<td><a href="https://cplusplus.github.io/CWG/issues/250.html">250</a></td>
+ <td>[<a href="https://wg21.link/over.over">over.over</a>]</td>
<td>TC1</td>
<td>Address of function template specialization with non-deduced template arguments</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="251">
<td><a href="https://cplusplus.github.io/CWG/issues/251.html">251</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>open</td>
<td>How many signed integer types are there?</td>
<td align="center">Not resolved</td>
</tr>
<tr id="252">
<td><a href="https://cplusplus.github.io/CWG/issues/252.html">252</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>CD1</td>
<td>Looking up deallocation functions in virtual destructors</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="253">
<td><a href="https://cplusplus.github.io/CWG/issues/253.html">253</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>C++17</td>
<td>Why must empty or fully-initialized const objects be initialized?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="254">
<td><a href="https://cplusplus.github.io/CWG/issues/254.html">254</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.elab">basic.lookup.elab</a>]</td>
<td>CD1</td>
<td>Definitional problems with <I>elaborated-type-specifier</I>s</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="255">
<td><a href="https://cplusplus.github.io/CWG/issues/255.html">255</a></td>
+ <td>[<a href="https://wg21.link/class.free">class.free</a>]</td>
<td>CD6</td>
<td>Placement deallocation functions and lookup ambiguity</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="256">
<td><a href="https://cplusplus.github.io/CWG/issues/256.html">256</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD1</td>
<td>Overflow in size calculations</td>
<td class="unknown" align="center">Duplicate of <a href="#624">624</a></td>
</tr>
<tr id="257">
<td><a href="https://cplusplus.github.io/CWG/issues/257.html">257</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>CD2</td>
<td>Abstract base constructors and virtual base initialization</td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="258">
<td><a href="https://cplusplus.github.io/CWG/issues/258.html">258</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>CD1</td>
<td><I>using-declaration</I>s and cv-qualifiers</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="259">
<td><a href="https://cplusplus.github.io/CWG/issues/259.html">259</a></td>
+ <td>[<a href="https://wg21.link/temp.spec">temp.spec</a>]</td>
<td>CD1</td>
<td>Restrictions on explicit specialization and instantiation</td>
<td class="full" align="center">Clang 4</td>
</tr>
<tr class="open" id="260">
<td><a href="https://cplusplus.github.io/CWG/issues/260.html">260</a></td>
+ <td>[<a href="https://wg21.link/over.built">over.built</a>]</td>
<td>open</td>
<td>User-defined conversions and built-in <TT>operator=</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr id="261">
<td><a href="https://cplusplus.github.io/CWG/issues/261.html">261</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD1</td>
<td>When is a deallocation function "used?"</td>
<td class="none" align="center">No</td>
</tr>
<tr id="262">
<td><a href="https://cplusplus.github.io/CWG/issues/262.html">262</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>CD1</td>
<td>Default arguments and ellipsis</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="263">
<td><a href="https://cplusplus.github.io/CWG/issues/263.html">263</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>CD1</td>
<td>Can a constructor be declared a friend?</td>
<td class="full" align="center">Clang 3.3</td>
</tr>
<tr class="open" id="264">
<td><a href="https://cplusplus.github.io/CWG/issues/264.html">264</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.explicit">temp.arg.explicit</a>]</td>
<td>open</td>
<td>Unusable template constructors and conversion functions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="265">
<td><a href="https://cplusplus.github.io/CWG/issues/265.html">265</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>dup</td>
<td>Destructors, exceptions, and deallocation</td>
<td class="unknown" align="center">Duplicate of <a href="#353">353</a></td>
</tr>
<tr id="266">
<td><a href="https://cplusplus.github.io/CWG/issues/266.html">266</a></td>
+ <td>[<a href="https://wg21.link/gram">gram</a>]</td>
<td>NAD</td>
<td>No grammar sentence symbol</td>
<td class="na" align="center">N/A</td>
</tr>
<tr class="open" id="267">
<td><a href="https://cplusplus.github.io/CWG/issues/267.html">267</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>open</td>
<td>Alignment requirement for <I>new-expression</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="268">
<td><a href="https://cplusplus.github.io/CWG/issues/268.html">268</a></td>
+ <td>[<a href="https://wg21.link/cpp.rescan">cpp.rescan</a>]</td>
<td>open</td>
<td>Macro name suppression in rescanned replacement text</td>
<td align="center">Not resolved</td>
</tr>
<tr id="269">
<td><a href="https://cplusplus.github.io/CWG/issues/269.html">269</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>NAD</td>
- <td>Order of initialization of multiply-defined static data members
-of class templates</td>
+ <td>Order of initialization of multiply-defined static data members of class templates</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="270">
<td><a href="https://cplusplus.github.io/CWG/issues/270.html">270</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>CD1</td>
<td>Order of initialization of static data members of class templates</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="271">
<td><a href="https://cplusplus.github.io/CWG/issues/271.html">271</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>CD6</td>
<td>Explicit instantiation and template argument deduction</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="272">
<td><a href="https://cplusplus.github.io/CWG/issues/272.html">272</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>CD1</td>
<td>Explicit destructor invocation and <I>qualified-id</I>s</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="273">
<td><a href="https://cplusplus.github.io/CWG/issues/273.html">273</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>CD1</td>
<td>POD classes and <TT>operator&amp;()</TT></td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="274">
<td><a href="https://cplusplus.github.io/CWG/issues/274.html">274</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>CD1</td>
<td>Cv-qualification and char-alias access to out-of-lifetime objects</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="275">
<td><a href="https://cplusplus.github.io/CWG/issues/275.html">275</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>CD1</td>
<td>Explicit instantiation/specialization and <I>using-directive</I>s</td>
<td class="none" align="center">No</td>
</tr>
<tr id="276">
<td><a href="https://cplusplus.github.io/CWG/issues/276.html">276</a></td>
+ <td>[<a href="https://wg21.link/stmt.jump">stmt.jump</a>]</td>
<td>CD1</td>
<td>Order of destruction of parameters and temporaries</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="277">
<td><a href="https://cplusplus.github.io/CWG/issues/277.html">277</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD1</td>
<td>Zero-initialization of pointers</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="278">
<td><a href="https://cplusplus.github.io/CWG/issues/278.html">278</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>NAD</td>
<td>External linkage and nameless entities</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="279">
<td><a href="https://cplusplus.github.io/CWG/issues/279.html">279</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD6</td>
<td>Correspondence of "names for linkage purposes"</td>
<td class="none" align="center">No</td>
</tr>
<tr id="280">
<td><a href="https://cplusplus.github.io/CWG/issues/280.html">280</a></td>
+ <td>[<a href="https://wg21.link/over.call.object">over.call.object</a>]</td>
<td>CD1</td>
<td>Access and surrogate call functions</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="281">
<td><a href="https://cplusplus.github.io/CWG/issues/281.html">281</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.spec">dcl.fct.spec</a>]</td>
<td>CD1</td>
<td><TT>inline</TT> specifier in <TT>friend</TT> declarations</td>
<td class="none" align="center">No</td>
</tr>
<tr class="open" id="282">
<td><a href="https://cplusplus.github.io/CWG/issues/282.html">282</a></td>
+ <td>[<a href="https://wg21.link/expr.typeid">expr.typeid</a>]</td>
<td>open</td>
<td>Namespace for <TT>extended_type_info</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr id="283">
<td><a href="https://cplusplus.github.io/CWG/issues/283.html">283</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.simple">dcl.type.simple</a>]</td>
<td>CD1</td>
<td>Template <I>type-parameter</I>s are not syntactically <I>type-name</I>s</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="284">
<td><a href="https://cplusplus.github.io/CWG/issues/284.html">284</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>CD1</td>
<td><I>qualified-id</I>s in class declarations</td>
<td class="none" align="center">No</td>
</tr>
<tr id="285">
<td><a href="https://cplusplus.github.io/CWG/issues/285.html">285</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>NAD</td>
<td>Identifying a function template being specialized</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="286">
<td><a href="https://cplusplus.github.io/CWG/issues/286.html">286</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial">temp.spec.partial</a>]</td>
<td>CD1</td>
<td>Incorrect example in partial specialization</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr class="open" id="287">
<td><a href="https://cplusplus.github.io/CWG/issues/287.html">287</a></td>
+ <td>[<a href="https://wg21.link/temp.point">temp.point</a>]</td>
<td>drafting</td>
<td>Order dependencies in template instantiation</td>
<td align="center">Not resolved</td>
</tr>
<tr id="288">
<td><a href="https://cplusplus.github.io/CWG/issues/288.html">288</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>CD1</td>
<td>Misuse of "static type" in describing pointers</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="289">
<td><a href="https://cplusplus.github.io/CWG/issues/289.html">289</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD1</td>
<td>Incomplete list of contexts requiring a complete type</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="290">
<td><a href="https://cplusplus.github.io/CWG/issues/290.html">290</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>NAD</td>
<td>Should memcpy be allowed into a POD with a const member?</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="291">
<td><a href="https://cplusplus.github.io/CWG/issues/291.html">291</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD1</td>
<td>Overload resolution needed when binding reference to class rvalue</td>
<td class="full" align="center">Duplicate of <a href="#391">391</a></td>
</tr>
<tr id="292">
<td><a href="https://cplusplus.github.io/CWG/issues/292.html">292</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD3</td>
<td>Deallocation on exception in <TT>new</TT> before arguments evaluated</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr class="open" id="293">
<td><a href="https://cplusplus.github.io/CWG/issues/293.html">293</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>open</td>
<td>Syntax of explicit instantiation/specialization too permissive</td>
<td align="center">Not resolved</td>
</tr>
<tr id="294">
<td><a href="https://cplusplus.github.io/CWG/issues/294.html">294</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>NAD</td>
<td>Can <TT>static_cast</TT> drop exception specifications?</td>
<td class="none" align="center">No</td>
</tr>
<tr id="295">
<td><a href="https://cplusplus.github.io/CWG/issues/295.html">295</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>CD1</td>
<td>cv-qualifiers on function types</td>
<td class="full" align="center">Clang 3.7</td>
</tr>
<tr id="296">
<td><a href="https://cplusplus.github.io/CWG/issues/296.html">296</a></td>
+ <td>[<a href="https://wg21.link/class.conv.fct">class.conv.fct</a>]</td>
<td>CD1</td>
<td>Can conversion functions be static?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="297">
<td><a href="https://cplusplus.github.io/CWG/issues/297.html">297</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>NAD</td>
<td>Which template does an explicit specialization specialize?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="298">
<td><a href="https://cplusplus.github.io/CWG/issues/298.html">298</a></td>
+ <td>[<a href="https://wg21.link/class.qual">class.qual</a>]</td>
<td>CD1</td>
<td><TT>T::x</TT> when <TT>T</TT> is cv-qualified</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="299">
<td><a href="https://cplusplus.github.io/CWG/issues/299.html">299</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD1</td>
<td>Conversion on array bound expression in <TT>new</TT></td>
<td class="full" align="center">Clang 2.8 (C++11 onwards)</td>
</tr>
<tr id="300">
<td><a href="https://cplusplus.github.io/CWG/issues/300.html">300</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>CD1</td>
<td>References to functions in template argument deduction</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="301">
<td><a href="https://cplusplus.github.io/CWG/issues/301.html">301</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>CD1</td>
<td>Syntax for <I>template-name</I></td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="302">
<td><a href="https://cplusplus.github.io/CWG/issues/302.html">302</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD1</td>
<td>Value-initialization and generation of default constructor</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="303">
<td><a href="https://cplusplus.github.io/CWG/issues/303.html">303</a></td>
+ <td>[<a href="https://wg21.link/conv.prom">conv.prom</a>]</td>
<td>NAD</td>
<td>Integral promotions on bit-fields</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="304">
<td><a href="https://cplusplus.github.io/CWG/issues/304.html">304</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>TC1</td>
<td>Value-initialization of a reference</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="305">
<td><a href="https://cplusplus.github.io/CWG/issues/305.html">305</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.classref">basic.lookup.classref</a>]</td>
<td>CD1</td>
<td>Name lookup in destructor call</td>
<td class="none" align="center">No</td>
</tr>
<tr id="306">
<td><a href="https://cplusplus.github.io/CWG/issues/306.html">306</a></td>
+ <td>[<a href="https://wg21.link/class.member.lookup">class.member.lookup</a>]</td>
<td>CD1</td>
<td>Ambiguity by class name injection</td>
<td class="none" align="center">Duplicate of <a href="#39">39</a></td>
</tr>
<tr id="307">
<td><a href="https://cplusplus.github.io/CWG/issues/307.html">307</a></td>
+ <td>[<a href="https://wg21.link/class.cdtor">class.cdtor</a>]</td>
<td>NAD</td>
<td>Initialization of a virtual base class subobject</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="308">
<td><a href="https://cplusplus.github.io/CWG/issues/308.html">308</a></td>
+ <td>[<a href="https://wg21.link/except.handle">except.handle</a>]</td>
<td>NAD</td>
<td>Catching exceptions with ambiguous base classes</td>
<td class="full" align="center">Clang 3.7</td>
</tr>
<tr id="309">
<td><a href="https://cplusplus.github.io/CWG/issues/309.html">309</a></td>
+ <td>[<a href="https://wg21.link/basic.pre">basic.pre</a>]</td>
<td>CD1</td>
<td>Linkage of entities whose names are not simply identifiers, in introduction</td>
<td class="full" align="center">Duplicate of <a href="#485">485</a></td>
</tr>
<tr class="open" id="310">
<td><a href="https://cplusplus.github.io/CWG/issues/310.html">310</a></td>
+ <td>[<a href="https://wg21.link/temp.over.link">temp.over.link</a>]</td>
<td>open</td>
<td>Can function templates differing only in parameter cv-qualifiers be overloaded?</td>
<td align="center">Not resolved</td>
</tr>
<tr id="311">
<td><a href="https://cplusplus.github.io/CWG/issues/311.html">311</a></td>
+ <td>[<a href="https://wg21.link/namespace.def">namespace.def</a>]</td>
<td>NAD</td>
<td>Using qualified name to reopen nested namespace</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="312">
<td><a href="https://cplusplus.github.io/CWG/issues/312.html">312</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.deallocation">basic.stc.dynamic.deallocation</a>]</td>
<td>CD3</td>
<td>&#8220;use&#8221; of invalid pointer value not defined</td>
<td class="full" align="center">Duplicate of <a href="#616">616</a></td>
</tr>
<tr id="313">
<td><a href="https://cplusplus.github.io/CWG/issues/313.html">313</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>dup</td>
<td>Class with single conversion function to integral as array size in <TT>new</TT></td>
<td class="full" align="center">Duplicate of <a href="#299">299</a> (C++11 onwards)</td>
</tr>
<tr id="314">
<td><a href="https://cplusplus.github.io/CWG/issues/314.html">314</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>C++17</td>
<td><TT>template</TT> in base class specifier</td>
<td class="none" align="center">No</td>
</tr>
<tr id="315">
<td><a href="https://cplusplus.github.io/CWG/issues/315.html">315</a></td>
+ <td>[<a href="https://wg21.link/class.static.mfct">class.static.mfct</a>]</td>
<td>NAD</td>
<td>Is call of static member function through null pointer undefined?</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="316">
<td><a href="https://cplusplus.github.io/CWG/issues/316.html">316</a></td>
+ <td>[<a href="https://wg21.link/temp.local">temp.local</a>]</td>
<td>NAD</td>
<td>Injected-class-name of template used as template template parameter</td>
<td class="full-superseded" align="center">Superseded by <a href="#1004">1004</a></td>
</tr>
<tr id="317">
<td><a href="https://cplusplus.github.io/CWG/issues/317.html">317</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.spec">dcl.fct.spec</a>]</td>
<td>CD1</td>
<td>Can a function be declared inline after it has been called?</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="318">
<td><a href="https://cplusplus.github.io/CWG/issues/318.html">318</a></td>
+ <td>[<a href="https://wg21.link/class.qual">class.qual</a>]</td>
<td>CD1</td>
<td><TT>struct A::A</TT> should not name the constructor of <TT>A</TT></td>
<td class="full-superseded" align="center">Superseded by <a href="#1310">1310</a></td>
</tr>
<tr id="319">
<td><a href="https://cplusplus.github.io/CWG/issues/319.html">319</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD1</td>
<td>Use of names without linkage in declaring entities with linkage</td>
<td class="none" align="center">No</td>
</tr>
<tr id="320">
<td><a href="https://cplusplus.github.io/CWG/issues/320.html">320</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>CD1</td>
<td>Question on copy constructor elision example</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="321">
<td><a href="https://cplusplus.github.io/CWG/issues/321.html">321</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>dup</td>
<td>Associated classes and namespaces for argument-dependent lookup</td>
<td class="full" align="center">Duplicate of <a href="#557">557</a></td>
</tr>
<tr id="322">
<td><a href="https://cplusplus.github.io/CWG/issues/322.html">322</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.conv">temp.deduct.conv</a>]</td>
<td>CD1</td>
<td>Deduction of reference conversions</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="323">
<td><a href="https://cplusplus.github.io/CWG/issues/323.html">323</a></td>
+ <td>[<a href="https://wg21.link/temp">temp</a>]</td>
<td>CD1</td>
<td>Where must <TT>export</TT> appear?</td>
<td class="full-superseded" align="center">Superseded by <a href="#820">820</a></td>
</tr>
<tr id="324">
<td><a href="https://cplusplus.github.io/CWG/issues/324.html">324</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.op">expr.unary.op</a>]</td>
<td>CD1</td>
<td>Can "<TT>&amp;</TT>" be applied to assignment to bit-field?</td>
<td class="full" align="center">Clang 3.6</td>
</tr>
<tr class="open" id="325">
<td><a href="https://cplusplus.github.io/CWG/issues/325.html">325</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>open</td>
<td>When are default arguments parsed?</td>
<td align="center">Not resolved</td>
</tr>
<tr id="326">
<td><a href="https://cplusplus.github.io/CWG/issues/326.html">326</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>CD1</td>
<td>Wording for definition of trivial constructor</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="327">
<td><a href="https://cplusplus.github.io/CWG/issues/327.html">327</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>CD1</td>
<td>Use of "structure" without definition</td>
<td class="na" align="center">Duplicate of <a href="#538">538</a></td>
</tr>
<tr id="328">
<td><a href="https://cplusplus.github.io/CWG/issues/328.html">328</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD1</td>
<td>Missing requirement that class member types be complete</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="329">
<td><a href="https://cplusplus.github.io/CWG/issues/329.html">329</a></td>
+ <td>[<a href="https://wg21.link/temp.friend">temp.friend</a>]</td>
<td>CD1</td>
<td>Evaluation of friends of templates</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="330">
<td><a href="https://cplusplus.github.io/CWG/issues/330.html">330</a></td>
+ <td>[<a href="https://wg21.link/conv.qual">conv.qual</a>]</td>
<td>CD4</td>
<td>Qualification conversions and pointers to arrays of pointers</td>
<td class="full" align="center">Clang 7</td>
</tr>
<tr id="331">
<td><a href="https://cplusplus.github.io/CWG/issues/331.html">331</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>CD1</td>
<td>Allowed copy constructor signatures</td>
<td class="full" align="center">Clang 11</td>
</tr>
<tr id="332">
<td><a href="https://cplusplus.github.io/CWG/issues/332.html">332</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>CD3</td>
<td>cv-qualified <TT>void</TT> parameter types</td>
<td class="full" align="center">Duplicate of <a href="#577">577</a></td>
</tr>
<tr id="333">
<td><a href="https://cplusplus.github.io/CWG/issues/333.html">333</a></td>
+ <td>[<a href="https://wg21.link/dcl.ambig.res">dcl.ambig.res</a>]</td>
<td>NAD</td>
<td>Ambiguous use of "declaration" in disambiguation section</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="334">
<td><a href="https://cplusplus.github.io/CWG/issues/334.html">334</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.expr">temp.dep.expr</a>]</td>
<td>NAD</td>
<td>Is a comma-expression dependent if its first operand is?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="335">
<td><a href="https://cplusplus.github.io/CWG/issues/335.html">335</a></td>
+ <td>[<a href="https://wg21.link/temp">temp</a>]</td>
<td>CD1</td>
<td>Allowing <TT>export</TT> on template members of nontemplate classes</td>
<td class="full-superseded" align="center">Superseded by <a href="#820">820</a></td>
</tr>
<tr id="336">
<td><a href="https://cplusplus.github.io/CWG/issues/336.html">336</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>CD1</td>
<td>Explicit specialization examples are still incorrect</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="337">
<td><a href="https://cplusplus.github.io/CWG/issues/337.html">337</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>CD1</td>
<td>Attempt to create array of abtract type should cause deduction to fail</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="338">
<td><a href="https://cplusplus.github.io/CWG/issues/338.html">338</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD6</td>
<td>Enumerator name with linkage used as class name in other translation unit</td>
<td class="partial" align="center">Duplicate of <a href="#1884">1884</a></td>
</tr>
<tr id="339">
<td><a href="https://cplusplus.github.io/CWG/issues/339.html">339</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD1</td>
<td>Overload resolution in operand of <TT>sizeof</TT> in constant expression</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="340">
<td><a href="https://cplusplus.github.io/CWG/issues/340.html">340</a></td>
+ <td>[<a href="https://wg21.link/dcl.ambig.res">dcl.ambig.res</a>]</td>
<td>NAD</td>
<td>Unclear wording in disambiguation section</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="341">
<td><a href="https://cplusplus.github.io/CWG/issues/341.html">341</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>C++11</td>
<td><TT>extern "C"</TT> namespace member function versus global variable</td>
<td class="unknown-superseded" align="center">Superseded by <a href="#1708">1708</a></td>
</tr>
<tr id="342">
<td><a href="https://cplusplus.github.io/CWG/issues/342.html">342</a></td>
+ <td>[<a href="https://wg21.link/expr.unary">expr.unary</a>]</td>
<td>CD3</td>
<td>Terminology: "indirection" versus "dereference"</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="343">
<td><a href="https://cplusplus.github.io/CWG/issues/343.html">343</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>C++17</td>
<td>Make <TT>template</TT> optional in contexts that require a type</td>
<td class="none" align="center">No</td>
</tr>
<tr id="344">
<td><a href="https://cplusplus.github.io/CWG/issues/344.html">344</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>CD3</td>
<td>Naming destructors</td>
<td class="unknown" align="center">Duplicate of <a href="#1435">1435</a></td>
</tr>
<tr id="345">
<td><a href="https://cplusplus.github.io/CWG/issues/345.html">345</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>CD1</td>
<td>Misleading comment on example in templates chapter</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="346">
<td><a href="https://cplusplus.github.io/CWG/issues/346.html">346</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>NAD</td>
<td>Typo in 15.4</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="347">
<td><a href="https://cplusplus.github.io/CWG/issues/347.html">347</a></td>
+ <td>[<a href="https://wg21.link/class.nest">class.nest</a>]</td>
<td>NAD</td>
<td>Use of derived class name in defining base class nested class</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="348">
<td><a href="https://cplusplus.github.io/CWG/issues/348.html">348</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.deallocation">basic.stc.dynamic.deallocation</a>]</td>
<td>CD1</td>
<td><TT>delete</TT> and user-written deallocation functions</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="349">
<td><a href="https://cplusplus.github.io/CWG/issues/349.html">349</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.conv">temp.deduct.conv</a>]</td>
<td>CD1</td>
<td>Template argument deduction for conversion functions and qualification conversions</td>
<td class="none" align="center">No</td>
</tr>
<tr class="open" id="350">
<td><a href="https://cplusplus.github.io/CWG/issues/350.html">350</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>open</td>
<td><TT>signed char</TT> underlying representation for objects</td>
<td align="center">Not resolved</td>
</tr>
<tr id="351">
<td><a href="https://cplusplus.github.io/CWG/issues/351.html">351</a></td>
+ <td>[<a href="https://wg21.link/expr">expr</a>]</td>
<td>CD1</td>
<td>Sequence point error: unspecified or undefined?</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="352">
<td><a href="https://cplusplus.github.io/CWG/issues/352.html">352</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>CD1</td>
<td>Nondeduced contexts</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="353">
<td><a href="https://cplusplus.github.io/CWG/issues/353.html">353</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>CD1</td>
<td>Is deallocation routine called if destructor throws exception in delete?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="354">
<td><a href="https://cplusplus.github.io/CWG/issues/354.html">354</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.nontype">temp.arg.nontype</a>]</td>
<td>CD1</td>
<td>Null as nontype template argument</td>
<td class="full" align="center">Clang 3.1 (C++11 onwards)</td>
</tr>
<tr id="355">
<td><a href="https://cplusplus.github.io/CWG/issues/355.html">355</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>C++11</td>
<td>Global-scope <TT>::</TT> in <I>nested-name-specifier</I></td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="356">
<td><a href="https://cplusplus.github.io/CWG/issues/356.html">356</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>NAD</td>
<td>Wording of behavior of generated copy constructor for scalar members</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="357">
<td><a href="https://cplusplus.github.io/CWG/issues/357.html">357</a></td>
+ <td>[<a href="https://wg21.link/intro.defs">intro.defs</a>]</td>
<td>CD1</td>
<td>Definition of signature should include name</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="358">
<td><a href="https://cplusplus.github.io/CWG/issues/358.html">358</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>NAD</td>
<td>Namespaces and extern "C"</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="359">
<td><a href="https://cplusplus.github.io/CWG/issues/359.html">359</a></td>
+ <td>[<a href="https://wg21.link/class.union">class.union</a>]</td>
<td>NAD</td>
<td>Type definition in anonymous union</td>
<td class="full" align="center">Clang 3.3</td>
</tr>
<tr id="360">
<td><a href="https://cplusplus.github.io/CWG/issues/360.html">360</a></td>
+ <td>[<a href="https://wg21.link/class.access.base">class.access.base</a>]</td>
<td>CD6</td>
<td>Using-declaration that reduces access</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr class="open" id="361">
<td><a href="https://cplusplus.github.io/CWG/issues/361.html">361</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>open</td>
<td>Forward reference to default argument</td>
<td align="center">Not resolved</td>
</tr>
<tr id="362">
<td><a href="https://cplusplus.github.io/CWG/issues/362.html">362</a></td>
+ <td>[<a href="https://wg21.link/lex.phases">lex.phases</a>]</td>
<td>CD1</td>
<td>Order of initialization in instantiation units</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="363">
<td><a href="https://cplusplus.github.io/CWG/issues/363.html">363</a></td>
+ <td>[<a href="https://wg21.link/class.expl.init">class.expl.init</a>]</td>
<td>NAD</td>
<td>Initialization of class from self</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="364">
<td><a href="https://cplusplus.github.io/CWG/issues/364.html">364</a></td>
+ <td>[<a href="https://wg21.link/over.call.func">over.call.func</a>]</td>
<td>CD1</td>
<td>Calling overloaded function with static in set, with no object</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="365">
<td><a href="https://cplusplus.github.io/CWG/issues/365.html">365</a></td>
+ <td>[<a href="https://wg21.link/basic.stc">basic.stc</a>]</td>
<td>open</td>
<td>Storage duration and temporaries</td>
<td align="center">Not resolved</td>
</tr>
<tr id="366">
<td><a href="https://cplusplus.github.io/CWG/issues/366.html">366</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD1</td>
<td>String literal allowed in integral constant expression?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="367">
<td><a href="https://cplusplus.github.io/CWG/issues/367.html">367</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD1</td>
<td><TT>throw</TT> operator allowed in constant expression?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="368">
<td><a href="https://cplusplus.github.io/CWG/issues/368.html">368</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>CD1</td>
<td>Uses of non-type parameters that should cause deduction to fail</td>
<td class="full" align="center">Clang 3.6</td>
</tr>
<tr class="open" id="369">
<td><a href="https://cplusplus.github.io/CWG/issues/369.html">369</a></td>
+ <td>[<a href="https://wg21.link/lex.pptoken">lex.pptoken</a>]</td>
<td>open</td>
<td>Are <TT>new</TT>/<TT>delete</TT> identifiers or <I>preprocessing-op-or-punc</I>?</td>
<td align="center">Not resolved</td>
</tr>
<tr id="370">
<td><a href="https://cplusplus.github.io/CWG/issues/370.html">370</a></td>
+ <td>[<a href="https://wg21.link/cpp.include">cpp.include</a>]</td>
<td>CD1</td>
<td>Can <TT>#include &lt;...&gt;</TT> form be used other than for standard C++ headers?</td>
<td class="na" align="center">N/A</td>
</tr>
<tr class="open" id="371">
<td><a href="https://cplusplus.github.io/CWG/issues/371.html">371</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>open</td>
<td>Interleaving of constructor calls</td>
<td align="center">Not resolved</td>
</tr>
<tr id="372">
<td><a href="https://cplusplus.github.io/CWG/issues/372.html">372</a></td>
+ <td>[<a href="https://wg21.link/temp.arg">temp.arg</a>]</td>
<td>CD1</td>
<td>Is access granted by base class specifiers available in following base class specifiers?</td>
<td class="none" align="center">No</td>
</tr>
<tr id="373">
<td><a href="https://cplusplus.github.io/CWG/issues/373.html">373</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.udir">basic.lookup.udir</a>]</td>
<td>C++11</td>
<td>Lookup on namespace qualified name in using-directive</td>
<td class="full" align="center">Clang 5</td>
</tr>
<tr id="374">
<td><a href="https://cplusplus.github.io/CWG/issues/374.html">374</a></td>
+ <td>[<a href="https://wg21.link/dcl.meaning">dcl.meaning</a>]</td>
<td>CD2</td>
<td>Can explicit specialization outside namespace use qualified name?</td>
<td class="full" align="center">Clang 7</td>
</tr>
<tr id="375">
<td><a href="https://cplusplus.github.io/CWG/issues/375.html">375</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>dup</td>
<td>Confusing example on lookup with <TT>typename</TT></td>
<td class="full" align="center">Duplicate of <a href="#345">345</a></td>
</tr>
<tr id="376">
<td><a href="https://cplusplus.github.io/CWG/issues/376.html">376</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.spec">dcl.fct.spec</a>]</td>
<td>NAD</td>
<td>Class "definition" versus class "declaration"</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="377">
<td><a href="https://cplusplus.github.io/CWG/issues/377.html">377</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>CD1</td>
<td>Enum whose enumerators will not fit in any integral type</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="378">
<td><a href="https://cplusplus.github.io/CWG/issues/378.html">378</a></td>
+ <td>[<a href="https://wg21.link/stmt.jump">stmt.jump</a>]</td>
<td>CD1</td>
<td>Wording that says temporaries are declared</td>
<td class="na" align="center">Duplicate of <a href="#276">276</a></td>
</tr>
<tr id="379">
<td><a href="https://cplusplus.github.io/CWG/issues/379.html">379</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>CD1</td>
<td>Change "class declaration" to "class definition"</td>
<td class="na" align="center">N/A</td>
</tr>
<tr class="open" id="380">
<td><a href="https://cplusplus.github.io/CWG/issues/380.html">380</a></td>
+ <td>[<a href="https://wg21.link/class.member.lookup">class.member.lookup</a>]</td>
<td>open</td>
<td>Definition of "ambiguous base class" missing</td>
<td align="center">Not resolved</td>
</tr>
<tr id="381">
<td><a href="https://cplusplus.github.io/CWG/issues/381.html">381</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.classref">basic.lookup.classref</a>]</td>
<td>CD1</td>
<td>Incorrect example of base class member lookup</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="382">
<td><a href="https://cplusplus.github.io/CWG/issues/382.html">382</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>CD1</td>
<td>Allow <TT>typename</TT> outside of templates</td>
<td class="full" align="center">Clang 2.7 (C++11 onwards)</td>
</tr>
<tr id="383">
<td><a href="https://cplusplus.github.io/CWG/issues/383.html">383</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>CD1</td>
<td>Is a class with a declared but not defined destructor a POD?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="384">
<td><a href="https://cplusplus.github.io/CWG/issues/384.html">384</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>NAD</td>
<td>Argument-dependent lookup and operator functions</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="385">
<td><a href="https://cplusplus.github.io/CWG/issues/385.html">385</a></td>
+ <td>[<a href="https://wg21.link/class.protected">class.protected</a>]</td>
<td>CD1</td>
<td>How does protected member check of 11.5 interact with using-declarations?</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="386">
<td><a href="https://cplusplus.github.io/CWG/issues/386.html">386</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>CD6</td>
<td>Friend declaration of name brought in by <I>using-declaration</I></td>
<td class="none" align="center">No</td>
</tr>
<tr id="387">
<td><a href="https://cplusplus.github.io/CWG/issues/387.html">387</a></td>
+ <td>[<a href="https://wg21.link/temp.inject">temp.inject</a>]</td>
<td>CD1</td>
<td>Errors in example in 14.6.5</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="388">
<td><a href="https://cplusplus.github.io/CWG/issues/388.html">388</a></td>
+ <td>[<a href="https://wg21.link/except.handle">except.handle</a>]</td>
<td>CD3</td>
<td>Catching base<TT>*&amp;</TT> from a throw of derived<TT>*</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="389">
<td><a href="https://cplusplus.github.io/CWG/issues/389.html">389</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD1</td>
<td>Unnamed types in entities with linkage</td>
<td class="none" align="center">No</td>
</tr>
<tr id="390">
<td><a href="https://cplusplus.github.io/CWG/issues/390.html">390</a></td>
+ <td>[<a href="https://wg21.link/class.abstract">class.abstract</a>]</td>
<td>CD1</td>
<td>Pure virtual must be defined when implicitly called</td>
<td class="full" align="center">Clang 3.3</td>
</tr>
<tr id="391">
<td><a href="https://cplusplus.github.io/CWG/issues/391.html">391</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD1</td>
<td>Require direct binding of short-lived references to rvalues</td>
<td class="full" align="center">Clang 2.8 (C++11 onwards)</td>
</tr>
<tr id="392">
<td><a href="https://cplusplus.github.io/CWG/issues/392.html">392</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>CD1</td>
<td>Use of full expression lvalue before temporary destruction</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="393">
<td><a href="https://cplusplus.github.io/CWG/issues/393.html">393</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>CD4</td>
<td>Pointer to array of unknown bound in template argument list in parameter</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="394">
<td><a href="https://cplusplus.github.io/CWG/issues/394.html">394</a></td>
+ <td>[<a href="https://wg21.link/cpp.pre">cpp.pre</a>]</td>
<td>CD1</td>
<td><I>identifier-list</I> is never defined</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="395">
<td><a href="https://cplusplus.github.io/CWG/issues/395.html">395</a></td>
+ <td>[<a href="https://wg21.link/class.conv.fct">class.conv.fct</a>]</td>
<td>NAD</td>
<td>Conversion operator template syntax</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="396">
<td><a href="https://cplusplus.github.io/CWG/issues/396.html">396</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.spec">dcl.fct.spec</a>]</td>
<td>CD1</td>
<td>Misleading note regarding use of <TT>auto</TT> for disambiguation</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="397">
<td><a href="https://cplusplus.github.io/CWG/issues/397.html">397</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.spec">dcl.fct.spec</a>]</td>
<td>CD1</td>
<td>Same address for string literals from default arguments in inline functions?</td>
<td class="unknown-superseded" align="center">Superseded by <a href="#1823">1823</a></td>
</tr>
<tr id="398">
<td><a href="https://cplusplus.github.io/CWG/issues/398.html">398</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>CD1</td>
<td>Ambiguous wording on naming a type in deduction</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="399">
<td><a href="https://cplusplus.github.io/CWG/issues/399.html">399</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>CD6</td>
<td>Destructor lookup redux</td>
<td class="full" align="center">Clang 11</td>
</tr>
<tr id="400">
<td><a href="https://cplusplus.github.io/CWG/issues/400.html">400</a></td>
+ <td>[<a href="https://wg21.link/namespace.qual">namespace.qual</a>]</td>
<td>CD1</td>
<td>Using-declarations and the "struct hack"</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="401">
<td><a href="https://cplusplus.github.io/CWG/issues/401.html">401</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>CD1</td>
<td>When is access for template parameter default arguments checked?</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr class="open" id="402">
<td><a href="https://cplusplus.github.io/CWG/issues/402.html">402</a></td>
+ <td>[<a href="https://wg21.link/temp.func.order">temp.func.order</a>]</td>
<td>open</td>
<td>More on partial ordering of function templates</td>
<td align="center">Not resolved</td>
</tr>
<tr id="403">
<td><a href="https://cplusplus.github.io/CWG/issues/403.html">403</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>CD1</td>
<td>Reference to a type as a <I>template-id</I></td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="404">
<td><a href="https://cplusplus.github.io/CWG/issues/404.html">404</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>CD1</td>
<td>Unclear reference to construction with non-trivial constructor</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="405">
<td><a href="https://cplusplus.github.io/CWG/issues/405.html">405</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.unqual">basic.lookup.unqual</a>]</td>
<td>CD6</td>
<td>Unqualified function name lookup</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="406">
<td><a href="https://cplusplus.github.io/CWG/issues/406.html">406</a></td>
+ <td>[<a href="https://wg21.link/class.static.data">class.static.data</a>]</td>
<td>CD1</td>
<td>Static data member in class with name for linkage purposes</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="407">
<td><a href="https://cplusplus.github.io/CWG/issues/407.html">407</a></td>
+ <td>[<a href="https://wg21.link/dcl.typedef">dcl.typedef</a>]</td>
<td>C++11</td>
<td>Named class with associated typedef: two names or one?</td>
<td class="full" align="center">Clang 3.8</td>
</tr>
<tr id="408">
<td><a href="https://cplusplus.github.io/CWG/issues/408.html">408</a></td>
+ <td>[<a href="https://wg21.link/temp.static">temp.static</a>]</td>
<td>CD2</td>
<td>sizeof applied to unknown-bound array static data member of template</td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="409">
<td><a href="https://cplusplus.github.io/CWG/issues/409.html">409</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>CD1</td>
<td>Obsolete paragraph missed by changes for issue 224</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="410">
<td><a href="https://cplusplus.github.io/CWG/issues/410.html">410</a></td>
+ <td>[<a href="https://wg21.link/temp.friend">temp.friend</a>]</td>
<td>CD1</td>
<td>Paragraph missed in changes for issue 166</td>
<td class="none" align="center">No</td>
</tr>
<tr id="411">
<td><a href="https://cplusplus.github.io/CWG/issues/411.html">411</a></td>
+ <td>[<a href="https://wg21.link/lex.string">lex.string</a>]</td>
<td>CD6</td>
<td>Use of universal-character-name in character versus string literals</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="412">
<td><a href="https://cplusplus.github.io/CWG/issues/412.html">412</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.spec">dcl.fct.spec</a>]</td>
<td>NAD</td>
<td>Can a replacement allocation function be inline?</td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="413">
<td><a href="https://cplusplus.github.io/CWG/issues/413.html">413</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>CD1</td>
<td>Definition of "empty class"</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="414">
<td><a href="https://cplusplus.github.io/CWG/issues/414.html">414</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.classref">basic.lookup.classref</a>]</td>
<td>CD1</td>
<td>Multiple types found on destructor lookup</td>
<td class="none" align="center">Duplicate of <a href="#305">305</a></td>
</tr>
<tr id="415">
<td><a href="https://cplusplus.github.io/CWG/issues/415.html">415</a></td>
+ <td>[<a href="https://wg21.link/temp.over">temp.over</a>]</td>
<td>CD1</td>
<td>Template deduction does not cause instantiation</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="416">
<td><a href="https://cplusplus.github.io/CWG/issues/416.html">416</a></td>
+ <td>[<a href="https://wg21.link/over.match.oper">over.match.oper</a>]</td>
<td>CD1</td>
<td>Class must be complete to allow operator lookup?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="417">
<td><a href="https://cplusplus.github.io/CWG/issues/417.html">417</a></td>
+ <td>[<a href="https://wg21.link/class.name">class.name</a>]</td>
<td>CD1</td>
<td>Using derived-class qualified name in out-of-class nested class definition</td>
<td class="none" align="center">No</td>
</tr>
<tr id="418">
<td><a href="https://cplusplus.github.io/CWG/issues/418.html">418</a></td>
+ <td>[<a href="https://wg21.link/over.match.best">over.match.best</a>]</td>
<td>CD6</td>
<td>Imperfect wording on error on multiple default arguments on a called function</td>
<td class="none" align="center">No</td>
</tr>
<tr class="open" id="419">
<td><a href="https://cplusplus.github.io/CWG/issues/419.html">419</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>open</td>
<td>Can cast to virtual base class be done on partially-constructed object?</td>
<td align="center">Not resolved</td>
</tr>
<tr id="420">
<td><a href="https://cplusplus.github.io/CWG/issues/420.html">420</a></td>
+ <td>[<a href="https://wg21.link/over.ref">over.ref</a>]</td>
<td>CD1</td>
<td>postfixexpression-&gt;scalar_type_dtor() inconsistent</td>
<td class="full" align="center">Clang 9</td>
</tr>
<tr id="421">
<td><a href="https://cplusplus.github.io/CWG/issues/421.html">421</a></td>
+ <td>[<a href="https://wg21.link/expr.ref">expr.ref</a>]</td>
<td>CD1</td>
<td>Is rvalue.field an rvalue?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="422">
<td><a href="https://cplusplus.github.io/CWG/issues/422.html">422</a></td>
+ <td>[<a href="https://wg21.link/dcl.typedef">dcl.typedef</a>]</td>
<td>NAD</td>
<td>Is a typedef redeclaration allowed with a template type that might be the same?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="423">
<td><a href="https://cplusplus.github.io/CWG/issues/423.html">423</a></td>
+ <td>[<a href="https://wg21.link/over.match.oper">over.match.oper</a>]</td>
<td>NAD</td>
<td>Can a conversion be done on the left operand of a compound assignment?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="424">
<td><a href="https://cplusplus.github.io/CWG/issues/424.html">424</a></td>
+ <td>[<a href="https://wg21.link/dcl.typedef">dcl.typedef</a>]</td>
<td>CD1</td>
<td>Wording problem with issue 56 resolution on redeclaring typedefs in class scope</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="425">
<td><a href="https://cplusplus.github.io/CWG/issues/425.html">425</a></td>
+ <td>[<a href="https://wg21.link/over.built">over.built</a>]</td>
<td>CD1</td>
<td>Set of candidates for overloaded built-in operator with float operand</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="426">
<td><a href="https://cplusplus.github.io/CWG/issues/426.html">426</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>C++17</td>
<td>Identically-named variables, one internally and one externally linked, allowed?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="427">
<td><a href="https://cplusplus.github.io/CWG/issues/427.html">427</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>CD1</td>
<td><TT>static_cast</TT> ambiguity: conversion versus cast to derived</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="428">
<td><a href="https://cplusplus.github.io/CWG/issues/428.html">428</a></td>
+ <td>[<a href="https://wg21.link/except.throw">except.throw</a>]</td>
<td>CD1</td>
<td>Mention of expression with reference type</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="429">
<td><a href="https://cplusplus.github.io/CWG/issues/429.html">429</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD1</td>
<td>Matching deallocation function chosen based on syntax or signature?</td>
<td class="full" align="center">Clang 2.8 (C++11 onwards)</td>
</tr>
<tr id="430">
<td><a href="https://cplusplus.github.io/CWG/issues/430.html">430</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>CD1</td>
<td>Ordering of expression evaluation in initializer list</td>
<td class="full" align="center">Clang 2.7 (C++11 onwards)</td>
</tr>
<tr id="431">
<td><a href="https://cplusplus.github.io/CWG/issues/431.html">431</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>C++11</td>
<td>Defect in wording in 14.2</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="432">
<td><a href="https://cplusplus.github.io/CWG/issues/432.html">432</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.class">basic.scope.class</a>]</td>
<td>CD1</td>
<td>Is injected class name visible in base class specifier list?</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="433">
<td><a href="https://cplusplus.github.io/CWG/issues/433.html">433</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.pdecl">basic.scope.pdecl</a>]</td>
<td>CD1</td>
<td>Do elaborated type specifiers in templates inject into enclosing namespace scope?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="434">
<td><a href="https://cplusplus.github.io/CWG/issues/434.html">434</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>NAD</td>
<td>Unclear suppression of standard conversions while binding reference to lvalue</td>
<td class="full-superseded" align="center">Superseded by <a href="#2352">2352</a></td>
</tr>
<tr id="435">
<td><a href="https://cplusplus.github.io/CWG/issues/435.html">435</a></td>
+ <td>[<a href="https://wg21.link/dcl.pre">dcl.pre</a>]</td>
<td>NAD</td>
<td>Change "declararation or definition" to "declaration"</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="436">
<td><a href="https://cplusplus.github.io/CWG/issues/436.html">436</a></td>
+ <td>[<a href="https://wg21.link/class.bit">class.bit</a>]</td>
<td>CD1</td>
<td>Problem in example in 9.6 paragraph 4</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="437">
<td><a href="https://cplusplus.github.io/CWG/issues/437.html">437</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD1</td>
<td>Is type of class allowed in member function exception specification?</td>
<td class="full-superseded-superseded" align="center">Superseded by <a href="#1308">1308</a></td>
</tr>
<tr id="438">
<td><a href="https://cplusplus.github.io/CWG/issues/438.html">438</a></td>
+ <td>[<a href="https://wg21.link/expr">expr</a>]</td>
<td>CD2</td>
<td>Possible flaw in wording for multiple accesses to object between sequence points</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="439">
<td><a href="https://cplusplus.github.io/CWG/issues/439.html">439</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>CD1</td>
<td>Guarantees on casting pointer back to cv-qualified version of original type</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="440">
<td><a href="https://cplusplus.github.io/CWG/issues/440.html">440</a></td>
+ <td>[<a href="https://wg21.link/temp.arg">temp.arg</a>]</td>
<td>NAD</td>
<td>Allow implicit pointer-to-member conversion on nontype template argument</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="441">
<td><a href="https://cplusplus.github.io/CWG/issues/441.html">441</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>CD1</td>
<td>Ordering of static reference initialization</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="442">
<td><a href="https://cplusplus.github.io/CWG/issues/442.html">442</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>CD1</td>
<td>Incorrect use of null pointer constant in description of delete operator</td>
<td class="na-superseded" align="center">Superseded by <a href="#348">348</a></td>
</tr>
<tr id="443">
<td><a href="https://cplusplus.github.io/CWG/issues/443.html">443</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>CD1</td>
<td>Wording nit in description of lifetime of temporaries</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="444">
<td><a href="https://cplusplus.github.io/CWG/issues/444.html">444</a></td>
+ <td>[<a href="https://wg21.link/class.copy.assign">class.copy.assign</a>]</td>
<td>NAD</td>
<td>Overriding and the generated copy assignment operator</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="445">
<td><a href="https://cplusplus.github.io/CWG/issues/445.html">445</a></td>
+ <td>[<a href="https://wg21.link/class.friend">class.friend</a>]</td>
<td>NAD</td>
<td>Wording issue on friend declarations</td>
<td class="full" align="center">Clang 3.2</td>
</tr>
<tr id="446">
<td><a href="https://cplusplus.github.io/CWG/issues/446.html">446</a></td>
+ <td>[<a href="https://wg21.link/expr.cond">expr.cond</a>]</td>
<td>CD1</td>
<td>Does an lvalue-to-rvalue conversion on the "?" operator produce a temporary?</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="447">
<td><a href="https://cplusplus.github.io/CWG/issues/447.html">447</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.constexpr">temp.dep.constexpr</a>]</td>
<td>CD1</td>
<td>Is offsetof type-dependent?</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="448">
<td><a href="https://cplusplus.github.io/CWG/issues/448.html">448</a></td>
+ <td>[<a href="https://wg21.link/temp.local">temp.local</a>]</td>
<td>C++11</td>
<td>Set of template functions in call with dependent explicit argument</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="449">
<td><a href="https://cplusplus.github.io/CWG/issues/449.html">449</a></td>
+ <td>[<a href="https://wg21.link/intro.defs">intro.defs</a>]</td>
<td>NAD</td>
<td>Consistency in use of hyphen with names of "non" entities</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="450">
<td><a href="https://cplusplus.github.io/CWG/issues/450.html">450</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD1</td>
<td>Binding a reference to const to a cv-qualified array rvalue</td>
<td class="full" align="center">Clang 3.2</td>
</tr>
<tr id="451">
<td><a href="https://cplusplus.github.io/CWG/issues/451.html">451</a></td>
+ <td>[<a href="https://wg21.link/expr">expr</a>]</td>
<td>CD1</td>
<td>Expressions with invalid results and ill-formedness</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="452">
<td><a href="https://cplusplus.github.io/CWG/issues/452.html">452</a></td>
+ <td>[<a href="https://wg21.link/class.this">class.this</a>]</td>
<td>CD1</td>
<td>Wording nit on description of <TT>this</TT></td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="453">
<td><a href="https://cplusplus.github.io/CWG/issues/453.html">453</a></td>
+ <td>[<a href="https://wg21.link/dcl.ref">dcl.ref</a>]</td>
<td>CD7</td>
<td>References may only bind to &#8220;valid&#8221; objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="454">
<td><a href="https://cplusplus.github.io/CWG/issues/454.html">454</a></td>
+ <td>[<a href="https://wg21.link/class.static.data">class.static.data</a>]</td>
<td>CD1</td>
<td>When is a definition of a static data member required?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="455">
<td><a href="https://cplusplus.github.io/CWG/issues/455.html">455</a></td>
+ <td>[<a href="https://wg21.link/over.match.best">over.match.best</a>]</td>
<td>NAD</td>
<td>Partial ordering and non-deduced arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="456">
<td><a href="https://cplusplus.github.io/CWG/issues/456.html">456</a></td>
+ <td>[<a href="https://wg21.link/conv.ptr">conv.ptr</a>]</td>
<td>NAD</td>
<td>Is initialized const int or const bool variable a null pointer constant?</td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="457">
<td><a href="https://cplusplus.github.io/CWG/issues/457.html">457</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD1</td>
<td>Wording nit on use of const variables in constant expressions</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="458">
<td><a href="https://cplusplus.github.io/CWG/issues/458.html">458</a></td>
+ <td>[<a href="https://wg21.link/temp.local">temp.local</a>]</td>
<td>C++11</td>
<td>Hiding of member template parameters by other members</td>
<td class="full" align="center">Clang 11</td>
</tr>
<tr id="459">
<td><a href="https://cplusplus.github.io/CWG/issues/459.html">459</a></td>
+ <td>[<a href="https://wg21.link/temp.local">temp.local</a>]</td>
<td>NAD</td>
<td>Hiding of template parameters by base class members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="460">
<td><a href="https://cplusplus.github.io/CWG/issues/460.html">460</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>CD1</td>
<td>Can a <I>using-declaration</I> name a namespace?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="461">
<td><a href="https://cplusplus.github.io/CWG/issues/461.html">461</a></td>
+ <td>[<a href="https://wg21.link/dcl.asm">dcl.asm</a>]</td>
<td>NAD</td>
<td>Make <TT>asm</TT> conditionally-supported</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="462">
<td><a href="https://cplusplus.github.io/CWG/issues/462.html">462</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>CD3</td>
<td>Lifetime of temporaries bound to comma expressions</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="463">
<td><a href="https://cplusplus.github.io/CWG/issues/463.html">463</a></td>
+ <td>[<a href="https://wg21.link/expr.reinterpret.cast">expr.reinterpret.cast</a>]</td>
<td>CD1</td>
<td><TT>reinterpret_cast&lt;T*&gt;(0)</TT></td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="464">
<td><a href="https://cplusplus.github.io/CWG/issues/464.html">464</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>CD1</td>
<td>Wording nit on lifetime of temporaries to which references are bound</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="465">
<td><a href="https://cplusplus.github.io/CWG/issues/465.html">465</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>NAD</td>
<td>May constructors of global objects call <TT>exit()</TT>?</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="466">
<td><a href="https://cplusplus.github.io/CWG/issues/466.html">466</a></td>
+ <td>[<a href="https://wg21.link/expr.pseudo">expr.pseudo</a>]</td>
<td>CD1</td>
<td>cv-qualifiers on pseudo-destructor type</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="467">
<td><a href="https://cplusplus.github.io/CWG/issues/467.html">467</a></td>
+ <td>[<a href="https://wg21.link/stmt.dcl">stmt.dcl</a>]</td>
<td>NAD</td>
<td>Jump past initialization of local static variable</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="468">
<td><a href="https://cplusplus.github.io/CWG/issues/468.html">468</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>CD1</td>
<td>Allow <TT>::template</TT> outside of templates</td>
<td class="full" align="center">Clang 2.7 (C++11 onwards)</td>
</tr>
<tr id="469">
<td><a href="https://cplusplus.github.io/CWG/issues/469.html">469</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>NAD</td>
<td>Const template specializations and reference arguments</td>
<td class="none" align="center">No</td>
</tr>
<tr id="470">
<td><a href="https://cplusplus.github.io/CWG/issues/470.html">470</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>CD1</td>
<td>Instantiation of members of an explicitly-instantiated class template</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="471">
<td><a href="https://cplusplus.github.io/CWG/issues/471.html">471</a></td>
+ <td>[<a href="https://wg21.link/class.access.base">class.access.base</a>]</td>
<td>NAD</td>
<td>Conflicting inherited access specifications</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr class="open" id="472">
<td><a href="https://cplusplus.github.io/CWG/issues/472.html">472</a></td>
+ <td>[<a href="https://wg21.link/class.protected">class.protected</a>]</td>
<td>open</td>
<td>Casting across protected inheritance</td>
<td align="center">
@@ -2887,5528 +3358,6447 @@ of class templates</td>
</tr>
<tr id="473">
<td><a href="https://cplusplus.github.io/CWG/issues/473.html">473</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>NAD</td>
<td>Block-scope declarations of allocator functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="474">
<td><a href="https://cplusplus.github.io/CWG/issues/474.html">474</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD1</td>
<td>Block-scope <TT>extern</TT> declarations in namespace members</td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="475">
<td><a href="https://cplusplus.github.io/CWG/issues/475.html">475</a></td>
+ <td>[<a href="https://wg21.link/except.uncaught">except.uncaught</a>]</td>
<td>C++11</td>
<td>When is <TT>std::uncaught_exception()</TT> true? (take 2)</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="476">
<td><a href="https://cplusplus.github.io/CWG/issues/476.html">476</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD5</td>
<td>Determining the buffer size for placement new</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="477">
<td><a href="https://cplusplus.github.io/CWG/issues/477.html">477</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.spec">dcl.fct.spec</a>]</td>
<td>CD1</td>
<td>Can <TT>virtual</TT> appear in a <TT>friend</TT> declaration?</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="478">
<td><a href="https://cplusplus.github.io/CWG/issues/478.html">478</a></td>
+ <td>[<a href="https://wg21.link/dcl.array">dcl.array</a>]</td>
<td>NAD</td>
<td>May a function parameter be an array of an abstract class type?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="479">
<td><a href="https://cplusplus.github.io/CWG/issues/479.html">479</a></td>
+ <td>[<a href="https://wg21.link/except.throw">except.throw</a>]</td>
<td>CD1</td>
<td>Copy elision in exception handling</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="480">
<td><a href="https://cplusplus.github.io/CWG/issues/480.html">480</a></td>
+ <td>[<a href="https://wg21.link/conv.mem">conv.mem</a>]</td>
<td>CD1</td>
<td>Is a base of a virtual base also virtual?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="481">
<td><a href="https://cplusplus.github.io/CWG/issues/481.html">481</a></td>
+ <td>[<a href="https://wg21.link/basic.scope">basic.scope</a>]</td>
<td>CD2</td>
<td>Scope of template parameters</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="482">
<td><a href="https://cplusplus.github.io/CWG/issues/482.html">482</a></td>
+ <td>[<a href="https://wg21.link/dcl.meaning">dcl.meaning</a>]</td>
<td>CD3</td>
<td>Qualified declarators in redeclarations</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="483">
<td><a href="https://cplusplus.github.io/CWG/issues/483.html">483</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>CD3</td>
<td>Normative requirements on integral ranges</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="484">
<td><a href="https://cplusplus.github.io/CWG/issues/484.html">484</a></td>
+ <td>[<a href="https://wg21.link/class.derived">class.derived</a>]</td>
<td>CD1</td>
<td>Can a <I>base-specifier</I> name a cv-qualified class type?</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="485">
<td><a href="https://cplusplus.github.io/CWG/issues/485.html">485</a></td>
+ <td>[<a href="https://wg21.link/basic.pre">basic.pre</a>]</td>
<td>CD1</td>
<td>What is a &#8220;name&#8221;?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="486">
<td><a href="https://cplusplus.github.io/CWG/issues/486.html">486</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>CD1</td>
<td>Invalid return types and template argument deduction</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="487">
<td><a href="https://cplusplus.github.io/CWG/issues/487.html">487</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>NAD</td>
<td>Operator overloading in constant expressions</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="488">
<td><a href="https://cplusplus.github.io/CWG/issues/488.html">488</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>CD1</td>
<td>Local types, overload resolution, and template argument deduction</td>
<td class="full" align="center">Clang 2.9 (C++11 onwards)</td>
</tr>
<tr id="489">
<td><a href="https://cplusplus.github.io/CWG/issues/489.html">489</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>NAD</td>
<td>Must member function templates be instantiated during overload resolution?</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="490">
<td><a href="https://cplusplus.github.io/CWG/issues/490.html">490</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.unqual">basic.lookup.unqual</a>]</td>
<td>CD2</td>
<td>Name lookup in friend declarations</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="491">
<td><a href="https://cplusplus.github.io/CWG/issues/491.html">491</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>CD1</td>
<td>Initializers for empty-class aggregrate members</td>
<td class="full" align="center">Duplicate of <a href="#413">413</a></td>
</tr>
<tr id="492">
<td><a href="https://cplusplus.github.io/CWG/issues/492.html">492</a></td>
+ <td>[<a href="https://wg21.link/expr.typeid">expr.typeid</a>]</td>
<td>CD1</td>
<td><TT>typeid</TT> constness inconsistent with example</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="493">
<td><a href="https://cplusplus.github.io/CWG/issues/493.html">493</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.conv">temp.deduct.conv</a>]</td>
<td>CD2</td>
<td>Type deduction from a <TT>bool</TT> context</td>
<td class="unknown" align="center">Duplicate of <a href="#976">976</a></td>
</tr>
<tr id="494">
<td><a href="https://cplusplus.github.io/CWG/issues/494.html">494</a></td>
+ <td>[<a href="https://wg21.link/class.access">class.access</a>]</td>
<td>CD1</td>
<td>Problems with the resolution of issue 45</td>
<td class="none" align="center">Duplicate of <a href="#372">372</a></td>
</tr>
<tr id="495">
<td><a href="https://cplusplus.github.io/CWG/issues/495.html">495</a></td>
+ <td>[<a href="https://wg21.link/over.match.best">over.match.best</a>]</td>
<td>CD2</td>
<td>Overload resolution with template and non-template conversion functions</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="496">
<td><a href="https://cplusplus.github.io/CWG/issues/496.html">496</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>CD3</td>
<td>Is a volatile-qualified type really a POD?</td>
<td class="full-superseded" align="center">Superseded by <a href="#2094">2094</a></td>
</tr>
<tr id="497">
<td><a href="https://cplusplus.github.io/CWG/issues/497.html">497</a></td>
+ <td>[<a href="https://wg21.link/expr.mptr.oper">expr.mptr.oper</a>]</td>
<td>CD1</td>
<td>Missing required initialization in example</td>
<td class="unknown-superseded" align="center">Superseded by <a href="#253">253</a></td>
</tr>
<tr class="open" id="498">
<td><a href="https://cplusplus.github.io/CWG/issues/498.html">498</a></td>
+ <td>[<a href="https://wg21.link/dcl.stc">dcl.stc</a>]</td>
<td>open</td>
<td>Storage class specifiers in definitions of class members</td>
<td align="center">Not resolved</td>
</tr>
<tr id="499">
<td><a href="https://cplusplus.github.io/CWG/issues/499.html">499</a></td>
+ <td>[<a href="https://wg21.link/except.throw">except.throw</a>]</td>
<td>CD2</td>
<td>Throwing an array of unknown size</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="500">
<td><a href="https://cplusplus.github.io/CWG/issues/500.html">500</a></td>
+ <td>[<a href="https://wg21.link/class.friend">class.friend</a>]</td>
<td>CD1</td>
<td>Access in <I>base-specifier</I>s of friend and nested classes</td>
<td class="none" align="center">Duplicate of <a href="#372">372</a></td>
</tr>
<tr id="501">
<td><a href="https://cplusplus.github.io/CWG/issues/501.html">501</a></td>
+ <td>[<a href="https://wg21.link/class.friend">class.friend</a>]</td>
<td>NAD</td>
<td>Visibility of friend declarations within the befriending class</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="502">
<td><a href="https://cplusplus.github.io/CWG/issues/502.html">502</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>C++11</td>
<td>Dependency of nested enumerations and enumerators</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="503">
<td><a href="https://cplusplus.github.io/CWG/issues/503.html">503</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>open</td>
<td>Cv-qualified function types in template argument deduction</td>
<td align="center">Not resolved</td>
</tr>
<tr id="504">
<td><a href="https://cplusplus.github.io/CWG/issues/504.html">504</a></td>
+ <td>[<a href="https://wg21.link/dcl.ref">dcl.ref</a>]</td>
<td>NAD</td>
<td>Should use of a variable in its own initializer require a diagnostic?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="505">
<td><a href="https://cplusplus.github.io/CWG/issues/505.html">505</a></td>
+ <td>[<a href="https://wg21.link/lex.ccon">lex.ccon</a>]</td>
<td>CD1</td>
<td>Conditionally-supported behavior for unknown character escapes</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="506">
<td><a href="https://cplusplus.github.io/CWG/issues/506.html">506</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>CD1</td>
<td>Conditionally-supported behavior for non-POD objects passed to ellipsis</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="507">
<td><a href="https://cplusplus.github.io/CWG/issues/507.html">507</a></td>
+ <td>[<a href="https://wg21.link/over.built">over.built</a>]</td>
<td>dup</td>
<td>Ambiguity assigning class object to built-in type</td>
<td class="unknown" align="center">Duplicate of <a href="#260">260</a></td>
</tr>
<tr id="508">
<td><a href="https://cplusplus.github.io/CWG/issues/508.html">508</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>C++11</td>
<td>Non-constructed value-initialized objects</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="509">
<td><a href="https://cplusplus.github.io/CWG/issues/509.html">509</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD1</td>
<td>Dead code in the specification of default initialization</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="510">
<td><a href="https://cplusplus.github.io/CWG/issues/510.html">510</a></td>
+ <td>[<a href="https://wg21.link/class.init">class.init</a>]</td>
<td>CD1</td>
<td>Default initialization of POD classes?</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="511">
<td><a href="https://cplusplus.github.io/CWG/issues/511.html">511</a></td>
+ <td>[<a href="https://wg21.link/class.prop">class.prop</a>]</td>
<td>NAD</td>
<td>POD-structs with template assignment operators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="512">
<td><a href="https://cplusplus.github.io/CWG/issues/512.html">512</a></td>
+ <td>[<a href="https://wg21.link/class.union">class.union</a>]</td>
<td>NAD</td>
<td>Union members with user-declared non-default constructors</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="513">
<td><a href="https://cplusplus.github.io/CWG/issues/513.html">513</a></td>
+ <td>[<a href="https://wg21.link/intro.object">intro.object</a>]</td>
<td>CD1</td>
<td>Non-class &#8220;most-derived&#8221; objects</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="514">
<td><a href="https://cplusplus.github.io/CWG/issues/514.html">514</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.unqual">basic.lookup.unqual</a>]</td>
<td>CD1</td>
<td>Is the initializer for a namespace member in the scope of the namespace?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="515">
<td><a href="https://cplusplus.github.io/CWG/issues/515.html">515</a></td>
+ <td>[<a href="https://wg21.link/temp.dep">temp.dep</a>]</td>
<td>CD1</td>
<td>Non-dependent references to base class members</td>
<td class="unknown-superseded" align="center">Superseded by <a href="#1017">1017</a></td>
</tr>
<tr id="516">
<td><a href="https://cplusplus.github.io/CWG/issues/516.html">516</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.simple">dcl.type.simple</a>]</td>
<td>CD1</td>
<td>Use of <TT>signed</TT> in bit-field declarations</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="517">
<td><a href="https://cplusplus.github.io/CWG/issues/517.html">517</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial.general">temp.spec.partial.general</a>]</td>
<td>CD1</td>
<td>Partial specialization following explicit instantiation</td>
<td class="none" align="center">No</td>
</tr>
<tr id="518">
<td><a href="https://cplusplus.github.io/CWG/issues/518.html">518</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>CD1</td>
<td>Trailing comma following <I>enumerator-list</I></td>
<td class="full" align="center">Clang 2.7 (C++11 onwards)</td>
</tr>
<tr id="519">
<td><a href="https://cplusplus.github.io/CWG/issues/519.html">519</a></td>
+ <td>[<a href="https://wg21.link/conv.ptr">conv.ptr</a>]</td>
<td>CD1</td>
<td>Null pointer preservation in <TT>void*</TT> conversions</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="520">
<td><a href="https://cplusplus.github.io/CWG/issues/520.html">520</a></td>
+ <td>[<a href="https://wg21.link/expr.cast">expr.cast</a>]</td>
<td>CD1</td>
<td>Old-style casts between incomplete class types</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="521">
<td><a href="https://cplusplus.github.io/CWG/issues/521.html">521</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.allocation">basic.stc.dynamic.allocation</a>]</td>
<td>CD1</td>
<td>Requirements for exceptions thrown by allocation functions</td>
<td class="none" align="center">No</td>
</tr>
<tr id="522">
<td><a href="https://cplusplus.github.io/CWG/issues/522.html">522</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>CD1</td>
<td>Array-to-pointer decay in template argument deduction</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="523">
<td><a href="https://cplusplus.github.io/CWG/issues/523.html">523</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.deallocation">basic.stc.dynamic.deallocation</a>]</td>
<td>open</td>
<td>Can a one-past-the-end pointer be invalidated by deleting an adjacent object?</td>
<td align="center">Not resolved</td>
</tr>
<tr id="524">
<td><a href="https://cplusplus.github.io/CWG/issues/524.html">524</a></td>
+ <td>[<a href="https://wg21.link/temp.dep">temp.dep</a>]</td>
<td>CD1</td>
<td>Can function-notation calls to operator functions be dependent?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="525">
<td><a href="https://cplusplus.github.io/CWG/issues/525.html">525</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>CD1</td>
<td>Missing <TT>*</TT> in example</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="526">
<td><a href="https://cplusplus.github.io/CWG/issues/526.html">526</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>CD1</td>
<td>Confusing aspects in the specification of non-deduced contexts</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="527">
<td><a href="https://cplusplus.github.io/CWG/issues/527.html">527</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD2</td>
<td>Problems with linkage of types</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="528">
<td><a href="https://cplusplus.github.io/CWG/issues/528.html">528</a></td>
+ <td>[<a href="https://wg21.link/expr.typeid">expr.typeid</a>]</td>
<td>NAD</td>
<td>Why are incomplete class types not allowed with <TT>typeid</TT>?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="529">
<td><a href="https://cplusplus.github.io/CWG/issues/529.html">529</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>open</td>
<td>Use of <TT>template&lt;&gt;</TT> with &#8220;explicitly-specialized&#8221; class templates</td>
<td align="center">Not resolved</td>
</tr>
<tr id="530">
<td><a href="https://cplusplus.github.io/CWG/issues/530.html">530</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD1</td>
<td>Nontype template arguments in constant expressions</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="531">
<td><a href="https://cplusplus.github.io/CWG/issues/531.html">531</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>C++11</td>
<td>Defining members of explicit specializations</td>
<td class="partial" align="center">Partial</td>
</tr>
<tr id="532">
<td><a href="https://cplusplus.github.io/CWG/issues/532.html">532</a></td>
+ <td>[<a href="https://wg21.link/temp.func.order">temp.func.order</a>]</td>
<td>C++11</td>
<td>Member/nonmember operator template partial ordering</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="533">
<td><a href="https://cplusplus.github.io/CWG/issues/533.html">533</a></td>
+ <td>[<a href="https://wg21.link/cpp.include">cpp.include</a>]</td>
<td>NAD</td>
<td>Special treatment for C-style header names</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="534">
<td><a href="https://cplusplus.github.io/CWG/issues/534.html">534</a></td>
+ <td>[<a href="https://wg21.link/temp">temp</a>]</td>
<td>CD1</td>
<td><I>template-name</I>s and <I>operator-function-id</I>s</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="535">
<td><a href="https://cplusplus.github.io/CWG/issues/535.html">535</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>CD3</td>
<td>Copy construction without a copy constructor</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="536">
<td><a href="https://cplusplus.github.io/CWG/issues/536.html">536</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.general">expr.prim.general</a>]</td>
<td>CD6</td>
<td>Problems in the description of <I>id-expression</I>s</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="537">
<td><a href="https://cplusplus.github.io/CWG/issues/537.html">537</a></td>
+ <td>[<a href="https://wg21.link/intro.defs">intro.defs</a>]</td>
<td>CD1</td>
<td>Definition of &#8220;signature&#8221;</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="538">
<td><a href="https://cplusplus.github.io/CWG/issues/538.html">538</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>CD1</td>
- <td>Definition and usage
-of <I>structure</I>, <I>POD-struct</I>, <I>POD-union</I>,
-and <I>POD class</I></td>
+ <td>Definition and usage of <I>structure</I>, <I>POD-struct</I>, <I>POD-union</I>, and <I>POD class</I></td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="539">
<td><a href="https://cplusplus.github.io/CWG/issues/539.html">539</a></td>
+ <td>[<a href="https://wg21.link/dcl.type">dcl.type</a>]</td>
<td>CD3</td>
<td>Constraints on <I>type-specifier-seq</I></td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="540">
<td><a href="https://cplusplus.github.io/CWG/issues/540.html">540</a></td>
+ <td>[<a href="https://wg21.link/namespace.def">namespace.def</a>]</td>
<td>CD1</td>
<td>Propagation of cv-qualifiers in reference-to-reference collapse</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="541">
<td><a href="https://cplusplus.github.io/CWG/issues/541.html">541</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.expr">temp.dep.expr</a>]</td>
<td>CD2</td>
<td>Dependent function types</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="542">
<td><a href="https://cplusplus.github.io/CWG/issues/542.html">542</a></td>
+ <td>[<a href="https://wg21.link/class.init">class.init</a>]</td>
<td>CD2</td>
<td>Value initialization of arrays of POD-structs</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="543">
<td><a href="https://cplusplus.github.io/CWG/issues/543.html">543</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD1</td>
<td>Value initialization and default constructors</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="544">
<td><a href="https://cplusplus.github.io/CWG/issues/544.html">544</a></td>
+ <td>[<a href="https://wg21.link/temp.dep">temp.dep</a>]</td>
<td>NAD</td>
<td>Base class lookup in explicit specialization</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="545">
<td><a href="https://cplusplus.github.io/CWG/issues/545.html">545</a></td>
+ <td>[<a href="https://wg21.link/over.match.oper">over.match.oper</a>]</td>
<td>open</td>
<td>User-defined conversions and built-in operator overload resolution</td>
<td align="center">Not resolved</td>
</tr>
<tr id="546">
<td><a href="https://cplusplus.github.io/CWG/issues/546.html">546</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>C++11</td>
<td>Explicit instantiation of class template members</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="547">
<td><a href="https://cplusplus.github.io/CWG/issues/547.html">547</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>C++11</td>
<td>Partial specialization on member function types</td>
<td class="full" align="center">Clang 3.2</td>
</tr>
<tr id="548">
<td><a href="https://cplusplus.github.io/CWG/issues/548.html">548</a></td>
+ <td>[<a href="https://wg21.link/dcl.meaning">dcl.meaning</a>]</td>
<td>dup</td>
<td><I>qualified-id</I>s in declarations</td>
<td class="full" align="center">Duplicate of <a href="#482">482</a></td>
</tr>
<tr class="open" id="549">
<td><a href="https://cplusplus.github.io/CWG/issues/549.html">549</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial.match">temp.spec.partial.match</a>]</td>
<td>drafting</td>
<td>Non-deducible parameters in partial specializations</td>
<td align="center">Not resolved</td>
</tr>
<tr id="550">
<td><a href="https://cplusplus.github.io/CWG/issues/550.html">550</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>dup</td>
<td>Pointer to array of unknown bound in parameter declarations</td>
<td class="full" align="center">Duplicate of <a href="#393">393</a></td>
</tr>
<tr id="551">
<td><a href="https://cplusplus.github.io/CWG/issues/551.html">551</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>CD1</td>
<td>When is <TT>inline</TT> permitted in an explicit instantiation?</td>
<td class="full" align="center">Clang 2.7 (C++11 onwards)</td>
</tr>
<tr id="552">
<td><a href="https://cplusplus.github.io/CWG/issues/552.html">552</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>NAD</td>
<td>Use of <TT>typename</TT> in the type in a non-type <I>parameter-declaration</I></td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="553">
<td><a href="https://cplusplus.github.io/CWG/issues/553.html">553</a></td>
+ <td>[<a href="https://wg21.link/namespace.memdef">namespace.memdef</a>]</td>
<td>NAD</td>
<td>Problems with friend allocation and deallocation functions</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="554">
<td><a href="https://cplusplus.github.io/CWG/issues/554.html">554</a></td>
+ <td>[<a href="https://wg21.link/basic.scope">basic.scope</a>]</td>
<td>CD6</td>
<td>Definition of &#8220;declarative region&#8221; and &#8220;scope&#8221;</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="555">
<td><a href="https://cplusplus.github.io/CWG/issues/555.html">555</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup">basic.lookup</a>]</td>
<td>CD5</td>
<td>Pseudo-destructor name lookup</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="556">
<td><a href="https://cplusplus.github.io/CWG/issues/556.html">556</a></td>
+ <td>[<a href="https://wg21.link/expr.assign">expr.assign</a>]</td>
<td>CD2</td>
<td>Conflicting requirements for acceptable aliasing</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="557">
<td><a href="https://cplusplus.github.io/CWG/issues/557.html">557</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>CD1</td>
<td>Does argument-dependent lookup cause template instantiation?</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="558">
<td><a href="https://cplusplus.github.io/CWG/issues/558.html">558</a></td>
+ <td>[<a href="https://wg21.link/lex.charset">lex.charset</a>]</td>
<td>CD1</td>
<td>Excluded characters in universal character names</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="559">
<td><a href="https://cplusplus.github.io/CWG/issues/559.html">559</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>CD1</td>
<td>Editing error in issue 382 resolution</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="560">
<td><a href="https://cplusplus.github.io/CWG/issues/560.html">560</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>NAD</td>
<td>Use of the <TT>typename</TT> keyword in return types</td>
<td class="full" align="center">Clang 16</td>
</tr>
<tr id="561">
<td><a href="https://cplusplus.github.io/CWG/issues/561.html">561</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.candidate">temp.dep.candidate</a>]</td>
<td>CD2</td>
<td>Internal linkage functions in dependent name lookup</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="562">
<td><a href="https://cplusplus.github.io/CWG/issues/562.html">562</a></td>
+ <td>[<a href="https://wg21.link/class.qual">class.qual</a>]</td>
<td>CD6</td>
<td><I>qualified-id</I>s in non-expression contexts</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="563">
<td><a href="https://cplusplus.github.io/CWG/issues/563.html">563</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>CD6</td>
<td>Linkage specification for objects</td>
<td class="full" align="center">Clang 3.3</td>
</tr>
<tr id="564">
<td><a href="https://cplusplus.github.io/CWG/issues/564.html">564</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>CD2</td>
<td>Agreement of language linkage or <I>linkage-specification</I>s?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="565">
<td><a href="https://cplusplus.github.io/CWG/issues/565.html">565</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>CD3</td>
<td>Conflict rules for <I>using-declaration</I>s naming function templates</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="566">
<td><a href="https://cplusplus.github.io/CWG/issues/566.html">566</a></td>
+ <td>[<a href="https://wg21.link/conv.fpint">conv.fpint</a>]</td>
<td>NAD</td>
<td>Conversion of negative floating point values to integer type</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="567">
<td><a href="https://cplusplus.github.io/CWG/issues/567.html">567</a></td>
+ <td>[<a href="https://wg21.link/expr.add">expr.add</a>]</td>
<td>NAD</td>
<td>Can <TT>size_t</TT> and <TT>ptrdiff_t</TT> be larger than <TT>long</TT>?</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="568">
<td><a href="https://cplusplus.github.io/CWG/issues/568.html">568</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>CD1</td>
<td>Definition of POD is too strict</td>
<td class="full" align="center">Clang 3.0 (C++11 onwards)</td>
</tr>
<tr id="569">
<td><a href="https://cplusplus.github.io/CWG/issues/569.html">569</a></td>
+ <td>[<a href="https://wg21.link/dcl.pre">dcl.pre</a>]</td>
<td>CD2</td>
<td>Spurious semicolons at namespace scope should be allowed</td>
<td class="full" align="center">Clang 2.7 (C++11 onwards)</td>
</tr>
<tr id="570">
<td><a href="https://cplusplus.github.io/CWG/issues/570.html">570</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD2</td>
<td>Are references subject to the ODR?</td>
<td class="na" align="center">Duplicate of <a href="#633">633</a></td>
</tr>
<tr id="571">
<td><a href="https://cplusplus.github.io/CWG/issues/571.html">571</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD2</td>
<td>References declared <TT>const</TT></td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="572">
<td><a href="https://cplusplus.github.io/CWG/issues/572.html">572</a></td>
+ <td>[<a href="https://wg21.link/conv">conv</a>]</td>
<td>C++11</td>
<td>Standard conversions for non-built-in types</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="573">
<td><a href="https://cplusplus.github.io/CWG/issues/573.html">573</a></td>
+ <td>[<a href="https://wg21.link/expr.reinterpret.cast">expr.reinterpret.cast</a>]</td>
<td>C++11</td>
<td>Conversions between function pointers and <TT>void*</TT></td>
<td class="none" align="center">No</td>
</tr>
<tr id="574">
<td><a href="https://cplusplus.github.io/CWG/issues/574.html">574</a></td>
+ <td>[<a href="https://wg21.link/class.copy.assign">class.copy.assign</a>]</td>
<td>NAD</td>
<td>Definition of &#8220;copy assignment operator&#8221;</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="575">
<td><a href="https://cplusplus.github.io/CWG/issues/575.html">575</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>C++11</td>
<td>Criteria for deduction failure</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="576">
<td><a href="https://cplusplus.github.io/CWG/issues/576.html">576</a></td>
+ <td>[<a href="https://wg21.link/dcl.typedef">dcl.typedef</a>]</td>
<td>CD2</td>
<td>Typedefs in function definitions</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="577">
<td><a href="https://cplusplus.github.io/CWG/issues/577.html">577</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>CD3</td>
<td><TT>void</TT> in an empty parameter list</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="578">
<td><a href="https://cplusplus.github.io/CWG/issues/578.html">578</a></td>
+ <td>[<a href="https://wg21.link/lex.phases">lex.phases</a>]</td>
<td>CD6</td>
<td>Phase 1 replacement of characters with <I>universal-character-name</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="579">
<td><a href="https://cplusplus.github.io/CWG/issues/579.html">579</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>open</td>
<td>What is a &#8220;nested&#8221; <TT>&gt;</TT> or <TT>&gt;&gt;</TT>?</td>
<td align="center">Not resolved</td>
</tr>
<tr id="580">
<td><a href="https://cplusplus.github.io/CWG/issues/580.html">580</a></td>
+ <td>[<a href="https://wg21.link/class.access">class.access</a>]</td>
<td>C++11</td>
<td>Access in <I>template-parameter</I>s of member and friend definitions</td>
<td class="partial" align="center">Partial</td>
</tr>
<tr id="581">
<td><a href="https://cplusplus.github.io/CWG/issues/581.html">581</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.explicit">temp.arg.explicit</a>]</td>
<td>CD5</td>
<td>Can a templated constructor be explicitly instantiated or specialized?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="582">
<td><a href="https://cplusplus.github.io/CWG/issues/582.html">582</a></td>
+ <td>[<a href="https://wg21.link/temp.mem">temp.mem</a>]</td>
<td>CD1</td>
<td>Template conversion functions</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="583">
<td><a href="https://cplusplus.github.io/CWG/issues/583.html">583</a></td>
+ <td>[<a href="https://wg21.link/expr.rel">expr.rel</a>]</td>
<td>CD3</td>
<td>Relational pointer comparisons against the null pointer constant</td>
<td class="full" align="center">Clang 4</td>
</tr>
<tr id="584">
<td><a href="https://cplusplus.github.io/CWG/issues/584.html">584</a></td>
+ <td>[<a href="https://wg21.link/basic.lval">basic.lval</a>]</td>
<td>NAD</td>
<td>Unions and aliasing</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="585">
<td><a href="https://cplusplus.github.io/CWG/issues/585.html">585</a></td>
+ <td>[<a href="https://wg21.link/class.friend">class.friend</a>]</td>
<td>NAD</td>
<td>Friend template template parameters</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="586">
<td><a href="https://cplusplus.github.io/CWG/issues/586.html">586</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>NAD</td>
<td>Default <I>template-argument</I>s and template argument deduction</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="587">
<td><a href="https://cplusplus.github.io/CWG/issues/587.html">587</a></td>
+ <td>[<a href="https://wg21.link/expr.cond">expr.cond</a>]</td>
<td>CD2</td>
<td>Lvalue operands of a conditional expression differing only in cv-qualification</td>
<td class="full" align="center">Clang 3.2</td>
</tr>
<tr id="588">
<td><a href="https://cplusplus.github.io/CWG/issues/588.html">588</a></td>
+ <td>[<a href="https://wg21.link/temp.dep">temp.dep</a>]</td>
<td>CD2</td>
<td>Searching dependent bases of classes local to function templates</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="589">
<td><a href="https://cplusplus.github.io/CWG/issues/589.html">589</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD2</td>
<td>Direct binding of class and array rvalues in reference initialization</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="590">
<td><a href="https://cplusplus.github.io/CWG/issues/590.html">590</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>C++11</td>
<td>Nested classes and the &#8220;current instantiation&#8221;</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="591">
<td><a href="https://cplusplus.github.io/CWG/issues/591.html">591</a></td>
+ <td>[<a href="https://wg21.link/temp.dep">temp.dep</a>]</td>
<td>CD4</td>
<td>When a dependent base class is the current instantiation</td>
<td class="full" align="center">Clang 20</td>
</tr>
<tr id="592">
<td><a href="https://cplusplus.github.io/CWG/issues/592.html">592</a></td>
+ <td>[<a href="https://wg21.link/except.ctor">except.ctor</a>]</td>
<td>CD1</td>
<td>Exceptions during construction of local static objects</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="593">
<td><a href="https://cplusplus.github.io/CWG/issues/593.html">593</a></td>
+ <td>[<a href="https://wg21.link/except.handle">except.handle</a>]</td>
<td>NAD</td>
<td>Falling off the end of a destructor's <I>function-try-block</I> handler</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="594">
<td><a href="https://cplusplus.github.io/CWG/issues/594.html">594</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>CD1</td>
<td>Coordinating issues 119 and 404 with delegating constructors</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="595">
<td><a href="https://cplusplus.github.io/CWG/issues/595.html">595</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>dup</td>
<td>Exception specifications in templates instantiated from class bodies</td>
<td class="full" align="center">Duplicate of <a href="#1330">1330</a></td>
</tr>
<tr id="596">
<td><a href="https://cplusplus.github.io/CWG/issues/596.html">596</a></td>
+ <td>[<a href="https://wg21.link/except.unexpected">except.unexpected</a>]</td>
<td>NAD</td>
<td>Replacing an exception object</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="597">
<td><a href="https://cplusplus.github.io/CWG/issues/597.html">597</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>CD3</td>
<td>Conversions applied to out-of-lifetime non-POD lvalues</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="598">
<td><a href="https://cplusplus.github.io/CWG/issues/598.html">598</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>CD2</td>
<td>Associated namespaces of overloaded functions and function templates</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="599">
<td><a href="https://cplusplus.github.io/CWG/issues/599.html">599</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>CD2</td>
<td>Deleting a null function pointer</td>
<td class="partial" align="center">Partial</td>
</tr>
<tr id="600">
<td><a href="https://cplusplus.github.io/CWG/issues/600.html">600</a></td>
+ <td>[<a href="https://wg21.link/class.access">class.access</a>]</td>
<td>CD6</td>
<td>Does access control apply to members or to names?</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="601">
<td><a href="https://cplusplus.github.io/CWG/issues/601.html">601</a></td>
+ <td>[<a href="https://wg21.link/cpp.cond">cpp.cond</a>]</td>
<td>CD2</td>
<td>Type of literals in preprocessing expressions</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="602">
<td><a href="https://cplusplus.github.io/CWG/issues/602.html">602</a></td>
+ <td>[<a href="https://wg21.link/temp.local">temp.local</a>]</td>
<td>C++11</td>
<td>When is the injected-class-name of a class template a template?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="603">
<td><a href="https://cplusplus.github.io/CWG/issues/603.html">603</a></td>
+ <td>[<a href="https://wg21.link/temp.type">temp.type</a>]</td>
<td>CD1</td>
<td>Type equivalence and unsigned overflow</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="604">
<td><a href="https://cplusplus.github.io/CWG/issues/604.html">604</a></td>
+ <td>[<a href="https://wg21.link/over.match.ctor">over.match.ctor</a>]</td>
<td>CD2</td>
<td>Argument list for overload resolution in copy-initialization</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="605">
<td><a href="https://cplusplus.github.io/CWG/issues/605.html">605</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>C++11</td>
<td>Linkage of explicit specializations</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="606">
<td><a href="https://cplusplus.github.io/CWG/issues/606.html">606</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>CD1</td>
<td>Template argument deduction for rvalue references</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="607">
<td><a href="https://cplusplus.github.io/CWG/issues/607.html">607</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>CD6</td>
<td>Lookup of <I>mem-initializer-id</I>s</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="608">
<td><a href="https://cplusplus.github.io/CWG/issues/608.html">608</a></td>
+ <td>[<a href="https://wg21.link/class.virtual">class.virtual</a>]</td>
<td>CD2</td>
<td>Determining the final overrider of a virtual function</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="609">
<td><a href="https://cplusplus.github.io/CWG/issues/609.html">609</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.cv">dcl.type.cv</a>]</td>
<td>CD4</td>
<td>What is a &#8220;top-level&#8221; cv-qualifier?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="610">
<td><a href="https://cplusplus.github.io/CWG/issues/610.html">610</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.op">expr.unary.op</a>]</td>
<td>NAD</td>
<td>Computing the negative of <TT>0U</TT></td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="611">
<td><a href="https://cplusplus.github.io/CWG/issues/611.html">611</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD2</td>
<td>Zero-initializing references</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="612">
<td><a href="https://cplusplus.github.io/CWG/issues/612.html">612</a></td>
+ <td>[<a href="https://wg21.link/intro.execution">intro.execution</a>]</td>
<td>CD2</td>
<td>Requirements on a conforming implementation</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="613">
<td><a href="https://cplusplus.github.io/CWG/issues/613.html">613</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD1</td>
<td>Unevaluated uses of non-static class members</td>
<td class="full" align="center">Clang 3.1 (C++11 onwards)</td>
</tr>
<tr id="614">
<td><a href="https://cplusplus.github.io/CWG/issues/614.html">614</a></td>
+ <td>[<a href="https://wg21.link/expr.mul">expr.mul</a>]</td>
<td>CD1</td>
<td>Results of integer <TT>/</TT> and <TT>%</TT></td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="615">
<td><a href="https://cplusplus.github.io/CWG/issues/615.html">615</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>C++11</td>
<td>Incorrect description of variables that can be initialized</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="616">
<td><a href="https://cplusplus.github.io/CWG/issues/616.html">616</a></td>
+ <td>[<a href="https://wg21.link/intro.defs">intro.defs</a>]</td>
<td>CD3</td>
<td>Definition of &#8220;indeterminate value&#8221;</td>
<td class="full" align="center">Clang 4</td>
</tr>
<tr id="617">
<td><a href="https://cplusplus.github.io/CWG/issues/617.html">617</a></td>
+ <td>[<a href="https://wg21.link/conv.lval">conv.lval</a>]</td>
<td>NAD</td>
<td>Lvalue-to-rvalue conversions of uninitialized <TT>char</TT> objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="618">
<td><a href="https://cplusplus.github.io/CWG/issues/618.html">618</a></td>
+ <td>[<a href="https://wg21.link/cpp.cond">cpp.cond</a>]</td>
<td>CD2</td>
<td>Casts in preprocessor conditional expressions</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="619">
<td><a href="https://cplusplus.github.io/CWG/issues/619.html">619</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>C++11</td>
<td>Completeness of array types</td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="620">
<td><a href="https://cplusplus.github.io/CWG/issues/620.html">620</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD1</td>
<td>Declaration order in layout-compatible POD structs</td>
<td class="full" align="center">Duplicate of <a href="#568">568</a></td>
</tr>
<tr id="621">
<td><a href="https://cplusplus.github.io/CWG/issues/621.html">621</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>C++11</td>
<td>Template argument deduction from function return types</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="622">
<td><a href="https://cplusplus.github.io/CWG/issues/622.html">622</a></td>
+ <td>[<a href="https://wg21.link/expr.rel">expr.rel</a>]</td>
<td>NAD</td>
<td>Relational comparisons of arbitrary pointers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="623">
<td><a href="https://cplusplus.github.io/CWG/issues/623.html">623</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.deallocation">basic.stc.dynamic.deallocation</a>]</td>
<td>CD3</td>
<td>Use of pointers to deallocated storage</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="624">
<td><a href="https://cplusplus.github.io/CWG/issues/624.html">624</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD1</td>
<td>Overflow in calculating size of allocation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="625">
<td><a href="https://cplusplus.github.io/CWG/issues/625.html">625</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>CD2</td>
<td>Use of <TT>auto</TT> as a <I>template-argument</I></td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="626">
<td><a href="https://cplusplus.github.io/CWG/issues/626.html">626</a></td>
+ <td>[<a href="https://wg21.link/cpp.stringize">cpp.stringize</a>]</td>
<td>CD2</td>
<td>Preprocessor string literals</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="627">
<td><a href="https://cplusplus.github.io/CWG/issues/627.html">627</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>NAD</td>
<td>Values behaving as types</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="628">
<td><a href="https://cplusplus.github.io/CWG/issues/628.html">628</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>CD2</td>
<td>The values of an enumeration with no enumerator</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="629">
<td><a href="https://cplusplus.github.io/CWG/issues/629.html">629</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>CD1</td>
<td><TT>auto</TT> parsing ambiguity</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="630">
<td><a href="https://cplusplus.github.io/CWG/issues/630.html">630</a></td>
+ <td>[<a href="https://wg21.link/lex.charset">lex.charset</a>]</td>
<td>CD2</td>
<td>Equality of narrow and wide character values in the basic character set</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="631">
<td><a href="https://cplusplus.github.io/CWG/issues/631.html">631</a></td>
+ <td>[<a href="https://wg21.link/stmt.if">stmt.if</a>]</td>
<td>CD3</td>
<td>Jumping into a &#8220;then&#8221; clause</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="632">
<td><a href="https://cplusplus.github.io/CWG/issues/632.html">632</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>CD1</td>
<td>Brace-enclosed initializer for scalar member of aggregate</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="633">
<td><a href="https://cplusplus.github.io/CWG/issues/633.html">633</a></td>
+ <td>[<a href="https://wg21.link/basic.pre">basic.pre</a>]</td>
<td>CD2</td>
<td>Specifications for variables that should also apply to references</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="634">
<td><a href="https://cplusplus.github.io/CWG/issues/634.html">634</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>CD1</td>
<td>Conditionally-supported behavior for non-POD objects passed to ellipsis redux</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="635">
<td><a href="https://cplusplus.github.io/CWG/issues/635.html">635</a></td>
+ <td>[<a href="https://wg21.link/class.qual">class.qual</a>]</td>
<td>NAD</td>
<td>Names of constructors and destructors of templates</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="636">
<td><a href="https://cplusplus.github.io/CWG/issues/636.html">636</a></td>
+ <td>[<a href="https://wg21.link/basic.lval">basic.lval</a>]</td>
<td>CD4</td>
<td>Dynamic type of objects and aliasing</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="637">
<td><a href="https://cplusplus.github.io/CWG/issues/637.html">637</a></td>
+ <td>[<a href="https://wg21.link/intro.execution">intro.execution</a>]</td>
<td>CD1</td>
<td>Sequencing rules and example disagree</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="638">
<td><a href="https://cplusplus.github.io/CWG/issues/638.html">638</a></td>
+ <td>[<a href="https://wg21.link/temp.friend">temp.friend</a>]</td>
<td>CD2</td>
<td>Explicit specialization and friendship</td>
<td class="none" align="center">No</td>
</tr>
<tr id="639">
<td><a href="https://cplusplus.github.io/CWG/issues/639.html">639</a></td>
+ <td>[<a href="https://wg21.link/intro.execution">intro.execution</a>]</td>
<td>CD1</td>
<td>What makes side effects &#8220;different&#8221; from one another?</td>
<td class="full" align="center">Clang 3.3</td>
</tr>
<tr id="640">
<td><a href="https://cplusplus.github.io/CWG/issues/640.html">640</a></td>
+ <td>[<a href="https://wg21.link/basic.start.dynamic">basic.start.dynamic</a>]</td>
<td>NAD</td>
<td>Accessing destroyed local objects of static storage duration</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="641">
<td><a href="https://cplusplus.github.io/CWG/issues/641.html">641</a></td>
+ <td>[<a href="https://wg21.link/over.match.viable">over.match.viable</a>]</td>
<td>CD2</td>
<td>Overload resolution and conversion-to-same-type operators</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="642">
<td><a href="https://cplusplus.github.io/CWG/issues/642.html">642</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.block">basic.scope.block</a>]</td>
<td>CD2</td>
<td>Definition and use of &#8220;block scope&#8221; and &#8220;local scope&#8221;</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="643">
<td><a href="https://cplusplus.github.io/CWG/issues/643.html">643</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.simple">dcl.type.simple</a>]</td>
<td>NAD</td>
<td>Use of <TT>decltype</TT> in a class <I>member-specification</I></td>
<td class="full" align="center">Clang 3.2</td>
</tr>
<tr id="644">
<td><a href="https://cplusplus.github.io/CWG/issues/644.html">644</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>CD1</td>
<td>Should a trivial class type be a literal type?</td>
<td class="partial" align="center">Partial</td>
</tr>
<tr id="645">
<td><a href="https://cplusplus.github.io/CWG/issues/645.html">645</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD2</td>
<td>Are bit-field and non-bit-field members layout compatible?</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="646">
<td><a href="https://cplusplus.github.io/CWG/issues/646.html">646</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>NAD</td>
<td>Can a class with a constexpr copy constructor be a literal type?</td>
<td class="unknown-superseded" align="center">Superseded by <a href="#981">981</a></td>
</tr>
<tr id="647">
<td><a href="https://cplusplus.github.io/CWG/issues/647.html">647</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>CD1</td>
<td>Non-constexpr instances of constexpr constructor templates</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="648">
<td><a href="https://cplusplus.github.io/CWG/issues/648.html">648</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>CD1</td>
<td>Constant expressions in constexpr initializers</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="649">
<td><a href="https://cplusplus.github.io/CWG/issues/649.html">649</a></td>
+ <td>[<a href="https://wg21.link/basic.align">basic.align</a>]</td>
<td>CD1</td>
<td>Optionally ill-formed extended alignment requests</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="650">
<td><a href="https://cplusplus.github.io/CWG/issues/650.html">650</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>CD2</td>
<td>Order of destruction for temporaries bound to the returned value of a function</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="651">
<td><a href="https://cplusplus.github.io/CWG/issues/651.html">651</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.simple">dcl.type.simple</a>]</td>
<td>CD1</td>
<td>Problems in <TT>decltype</TT> specification and examples</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="652">
<td><a href="https://cplusplus.github.io/CWG/issues/652.html">652</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD2</td>
<td>Compile-time evaluation of floating-point expressions</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="653">
<td><a href="https://cplusplus.github.io/CWG/issues/653.html">653</a></td>
+ <td>[<a href="https://wg21.link/class.copy.assign">class.copy.assign</a>]</td>
<td>CD2</td>
<td>Copy assignment of unions</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="654">
<td><a href="https://cplusplus.github.io/CWG/issues/654.html">654</a></td>
+ <td>[<a href="https://wg21.link/conv.ptr">conv.ptr</a>]</td>
<td>CD1</td>
<td>Conversions to and from <TT>nullptr_t</TT></td>
<td class="full-superseded" align="center">Superseded by <a href="#1423">1423</a></td>
</tr>
<tr id="655">
<td><a href="https://cplusplus.github.io/CWG/issues/655.html">655</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>C++11</td>
<td>Initialization not specified for forwarding constructors</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="656">
<td><a href="https://cplusplus.github.io/CWG/issues/656.html">656</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD2</td>
<td>Direct binding to the result of a conversion operator</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="657">
<td><a href="https://cplusplus.github.io/CWG/issues/657.html">657</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>CD2</td>
<td>Abstract class parameter in synthesized declaration</td>
<td class="partial" align="center">Partial</td>
</tr>
<tr id="658">
<td><a href="https://cplusplus.github.io/CWG/issues/658.html">658</a></td>
+ <td>[<a href="https://wg21.link/expr.reinterpret.cast">expr.reinterpret.cast</a>]</td>
<td>CD2</td>
<td>Defining <TT>reinterpret_cast</TT> for pointer types</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="659">
<td><a href="https://cplusplus.github.io/CWG/issues/659.html">659</a></td>
+ <td>[<a href="https://wg21.link/expr.alignof">expr.alignof</a>]</td>
<td>CD1</td>
<td>Alignment of function types</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="660">
<td><a href="https://cplusplus.github.io/CWG/issues/660.html">660</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>CD1</td>
<td>Unnamed scoped enumerations</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="661">
<td><a href="https://cplusplus.github.io/CWG/issues/661.html">661</a></td>
+ <td>[<a href="https://wg21.link/expr.rel">expr.rel</a>]</td>
<td>CD1</td>
<td>Semantics of arithmetic comparisons</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="662">
<td><a href="https://cplusplus.github.io/CWG/issues/662.html">662</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>NAD</td>
<td>Forming a pointer to a reference type</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="663">
<td><a href="https://cplusplus.github.io/CWG/issues/663.html">663</a></td>
+ <td>[<a href="https://wg21.link/extendid">extendid</a>]</td>
<td>CD1</td>
<td>Valid Cyrillic identifier characters</td>
<td class="na" align="center">Superseded by <a href="https://wg21.link/P1949">P1949</a></td>
</tr>
<tr id="664">
<td><a href="https://cplusplus.github.io/CWG/issues/664.html">664</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD2</td>
<td>Direct binding of references to non-class rvalue references</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="665">
<td><a href="https://cplusplus.github.io/CWG/issues/665.html">665</a></td>
+ <td>[<a href="https://wg21.link/expr.dynamic.cast">expr.dynamic.cast</a>]</td>
<td>CD2</td>
<td>Problems in the specification of <TT>dynamic_cast</TT></td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="666">
<td><a href="https://cplusplus.github.io/CWG/issues/666.html">666</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>CD1</td>
<td>Dependent <I>qualified-id</I>s without the <TT>typename</TT> keyword</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="667">
<td><a href="https://cplusplus.github.io/CWG/issues/667.html">667</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>CD2</td>
<td>Trivial special member functions that cannot be implicitly defined</td>
<td class="full" align="center">Clang 8</td>
</tr>
<tr id="668">
<td><a href="https://cplusplus.github.io/CWG/issues/668.html">668</a></td>
+ <td>[<a href="https://wg21.link/except.terminate">except.terminate</a>]</td>
<td>CD2</td>
<td>Throwing an exception from the destructor of a local static object</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="669">
<td><a href="https://cplusplus.github.io/CWG/issues/669.html">669</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.simple">dcl.type.simple</a>]</td>
<td>NAD</td>
<td>Confusing specification of the meaning of <TT>decltype</TT></td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="670">
<td><a href="https://cplusplus.github.io/CWG/issues/670.html">670</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD4</td>
<td>Copy initialization via derived-to-base conversion in the second step</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="671">
<td><a href="https://cplusplus.github.io/CWG/issues/671.html">671</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>CD1</td>
<td>Explicit conversion from a scoped enumeration type to integral type</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="672">
<td><a href="https://cplusplus.github.io/CWG/issues/672.html">672</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD2</td>
<td>Sequencing of initialization in <I>new-expression</I>s</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="673">
<td><a href="https://cplusplus.github.io/CWG/issues/673.html">673</a></td>
+ <td>[<a href="https://wg21.link/namespace.memdef">namespace.memdef</a>]</td>
<td>NAD</td>
<td>Injection of names from <I>elaborated-type-specifier</I>s in <TT>friend</TT> declarations</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="674">
<td><a href="https://cplusplus.github.io/CWG/issues/674.html">674</a></td>
+ <td>[<a href="https://wg21.link/temp.friend">temp.friend</a>]</td>
<td>C++11</td>
<td>&#8220;matching specialization&#8221; for a friend declaration</td>
<td class="full" align="center">Clang 8</td>
</tr>
<tr id="675">
<td><a href="https://cplusplus.github.io/CWG/issues/675.html">675</a></td>
+ <td>[<a href="https://wg21.link/class.bit">class.bit</a>]</td>
<td>CD3</td>
<td>Signedness of bit-field with typedef or template parameter type</td>
<td class="unknown" align="center">Duplicate of <a href="#739">739</a></td>
</tr>
<tr id="676">
<td><a href="https://cplusplus.github.io/CWG/issues/676.html">676</a></td>
+ <td>[<a href="https://wg21.link/basic.def">basic.def</a>]</td>
<td>C++11</td>
<td><I>static_assert-declaration</I>s and general requirements for declarations</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="677">
<td><a href="https://cplusplus.github.io/CWG/issues/677.html">677</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>CD1</td>
<td>Deleted <TT>operator delete</TT> and virtual destructors</td>
<td class="none" align="center">No</td>
</tr>
<tr id="678">
<td><a href="https://cplusplus.github.io/CWG/issues/678.html">678</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>C++11</td>
<td>Language linkage of member function parameter types and the ODR</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="679">
<td><a href="https://cplusplus.github.io/CWG/issues/679.html">679</a></td>
+ <td>[<a href="https://wg21.link/temp.type">temp.type</a>]</td>
<td>CD1</td>
<td>Equivalence of <I>template-id</I>s and operator function templates</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="680">
<td><a href="https://cplusplus.github.io/CWG/issues/680.html">680</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>CD2</td>
<td>What is a move constructor?</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="681">
<td><a href="https://cplusplus.github.io/CWG/issues/681.html">681</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>CD1</td>
<td>Restrictions on declarators with late-specified return types</td>
<td class="partial" align="center">Partial</td>
</tr>
<tr id="682">
<td><a href="https://cplusplus.github.io/CWG/issues/682.html">682</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.classref">basic.lookup.classref</a>]</td>
<td>CD5</td>
<td>Missing description of lookup of template aliases</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="683">
<td><a href="https://cplusplus.github.io/CWG/issues/683.html">683</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>CD1</td>
<td>Requirements for trivial subobject special functions</td>
<td class="full" align="center">Clang 3.3</td>
</tr>
<tr id="684">
<td><a href="https://cplusplus.github.io/CWG/issues/684.html">684</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD1</td>
<td>Constant expressions involving the address of an automatic variable</td>
<td class="unknown-superseded" align="center">Superseded by <a href="#1454">1454</a></td>
</tr>
<tr id="685">
<td><a href="https://cplusplus.github.io/CWG/issues/685.html">685</a></td>
+ <td>[<a href="https://wg21.link/conv.prom">conv.prom</a>]</td>
<td>CD2</td>
<td>Integral promotion of enumeration ignores fixed underlying type</td>
<td class="full" align="center">Clang 10</td>
</tr>
<tr id="686">
<td><a href="https://cplusplus.github.io/CWG/issues/686.html">686</a></td>
+ <td>[<a href="https://wg21.link/dcl.name">dcl.name</a>]</td>
<td>CD1</td>
<td>Type declarations/definitions in <I>type-specifier-seq</I>s and <I>type-id</I>s</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="687">
<td><a href="https://cplusplus.github.io/CWG/issues/687.html">687</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.general">expr.prim.general</a>]</td>
<td>NAD</td>
<td><TT>template</TT> keyword with <I>unqualified-id</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="688">
<td><a href="https://cplusplus.github.io/CWG/issues/688.html">688</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>CD1</td>
<td>Constexpr constructors and static initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="689">
<td><a href="https://cplusplus.github.io/CWG/issues/689.html">689</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>CD5</td>
<td>Maximum values of signed and unsigned integers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="690">
<td><a href="https://cplusplus.github.io/CWG/issues/690.html">690</a></td>
+ <td>[<a href="https://wg21.link/intro.defs">intro.defs</a>]</td>
<td>CD2</td>
<td>The dynamic type of an rvalue reference</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="691">
<td><a href="https://cplusplus.github.io/CWG/issues/691.html">691</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>C++11</td>
<td>Template parameter packs in class template partial specializations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="692">
<td><a href="https://cplusplus.github.io/CWG/issues/692.html">692</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>C++11</td>
<td>Partial ordering of variadic class template partial specializations</td>
<td class="full" align="center">Clang 16</td>
</tr>
<tr id="693">
<td><a href="https://cplusplus.github.io/CWG/issues/693.html">693</a></td>
+ <td>[<a href="https://wg21.link/conv.array">conv.array</a>]</td>
<td>CD2</td>
<td>New string types and deprecated conversion</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="694">
<td><a href="https://cplusplus.github.io/CWG/issues/694.html">694</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>C++11</td>
<td>Zero- and value-initialization of union objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="695">
<td><a href="https://cplusplus.github.io/CWG/issues/695.html">695</a></td>
+ <td>[<a href="https://wg21.link/expr">expr</a>]</td>
<td>CD2</td>
<td>Compile-time calculation errors in constexpr functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="696">
<td><a href="https://cplusplus.github.io/CWG/issues/696.html">696</a></td>
+ <td>[<a href="https://wg21.link/class.local">class.local</a>]</td>
<td>C++11</td>
<td>Use of block-scope constants in local classes</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr class="open" id="697">
<td><a href="https://cplusplus.github.io/CWG/issues/697.html">697</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>open</td>
<td>Deduction rules apply to more than functions</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="698">
<td><a href="https://cplusplus.github.io/CWG/issues/698.html">698</a></td>
+ <td>[<a href="https://wg21.link/intro.execution">intro.execution</a>]</td>
<td>open</td>
<td>The definition of &#8220;sequenced before&#8221; is too narrow</td>
<td align="center">Not resolved</td>
</tr>
<tr id="699">
<td><a href="https://cplusplus.github.io/CWG/issues/699.html">699</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>CD2</td>
<td>Must constexpr member functions be defined in the class <I>member-specification</I>?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="700">
<td><a href="https://cplusplus.github.io/CWG/issues/700.html">700</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>C++11</td>
<td>Constexpr member functions of class templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="701">
<td><a href="https://cplusplus.github.io/CWG/issues/701.html">701</a></td>
+ <td>[<a href="https://wg21.link/dcl.array">dcl.array</a>]</td>
<td>CD2</td>
<td>When is the array-to-pointer conversion applied?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="702">
<td><a href="https://cplusplus.github.io/CWG/issues/702.html">702</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>CD2</td>
<td>Preferring conversion to <TT>std::initializer_list</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="703">
<td><a href="https://cplusplus.github.io/CWG/issues/703.html">703</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD2</td>
<td>Narrowing for literals that cannot be exactly represented</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="704">
<td><a href="https://cplusplus.github.io/CWG/issues/704.html">704</a></td>
+ <td>[<a href="https://wg21.link/over.match.call">over.match.call</a>]</td>
<td>CD2</td>
<td>To which <I>postfix-expression</I>s does overload resolution apply?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="705">
<td><a href="https://cplusplus.github.io/CWG/issues/705.html">705</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>CD2</td>
<td>Suppressing argument-dependent lookup via parentheses</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="706">
<td><a href="https://cplusplus.github.io/CWG/issues/706.html">706</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>NAD</td>
<td>Use of <TT>auto</TT> with rvalue references</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="707">
<td><a href="https://cplusplus.github.io/CWG/issues/707.html">707</a></td>
+ <td>[<a href="https://wg21.link/conv.fpint">conv.fpint</a>]</td>
<td>CD2</td>
<td>Undefined behavior in integral-to-floating conversions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="708">
<td><a href="https://cplusplus.github.io/CWG/issues/708.html">708</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial">temp.spec.partial</a>]</td>
<td>open</td>
<td>Partial specialization of member templates of class templates</td>
<td align="center">Not resolved</td>
</tr>
<tr id="709">
<td><a href="https://cplusplus.github.io/CWG/issues/709.html">709</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>C++11</td>
<td>Enumeration names as <I>nested-name-specifier</I>s in deduction failure</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="710">
<td><a href="https://cplusplus.github.io/CWG/issues/710.html">710</a></td>
+ <td>[<a href="https://wg21.link/class.cdtor">class.cdtor</a>]</td>
<td>CD2</td>
<td>Data races during construction</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="711">
<td><a href="https://cplusplus.github.io/CWG/issues/711.html">711</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>CD2</td>
<td><TT>auto</TT> with <I>braced-init-list</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="712">
<td><a href="https://cplusplus.github.io/CWG/issues/712.html">712</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD3</td>
<td>Are integer constant operands of a <I>conditional-expression</I> &#8220;used?&#8221;</td>
<td class="partial" align="center">Partial</td>
</tr>
<tr id="713">
<td><a href="https://cplusplus.github.io/CWG/issues/713.html">713</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>CD2</td>
<td>Unclear note about cv-qualified function types</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="714">
<td><a href="https://cplusplus.github.io/CWG/issues/714.html">714</a></td>
+ <td>[<a href="https://wg21.link/class.static.data">class.static.data</a>]</td>
<td>CD2</td>
<td>Static const data members and <I>braced-init-list</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="715">
<td><a href="https://cplusplus.github.io/CWG/issues/715.html">715</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD2</td>
<td>Class member access constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="716">
<td><a href="https://cplusplus.github.io/CWG/issues/716.html">716</a></td>
+ <td>[<a href="https://wg21.link/class.union">class.union</a>]</td>
<td>CD2</td>
<td>Specifications that should apply only to non-static union data members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="717">
<td><a href="https://cplusplus.github.io/CWG/issues/717.html">717</a></td>
+ <td>[<a href="https://wg21.link/dcl.stc">dcl.stc</a>]</td>
<td>CD2</td>
<td>Unintentional restrictions on the use of <TT>thread_local</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="718">
<td><a href="https://cplusplus.github.io/CWG/issues/718.html">718</a></td>
+ <td>[<a href="https://wg21.link/class.friend">class.friend</a>]</td>
<td>NAD</td>
<td>Non-class, non-function friend declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="719">
<td><a href="https://cplusplus.github.io/CWG/issues/719.html">719</a></td>
+ <td>[<a href="https://wg21.link/basic.pre">basic.pre</a>]</td>
<td>CD2</td>
<td>Specifications for <I>operator-function-id</I> that should also apply to <I>literal-operator-id</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="720">
<td><a href="https://cplusplus.github.io/CWG/issues/720.html">720</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>CD2</td>
<td>Need examples of <I>lambda-expression</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="721">
<td><a href="https://cplusplus.github.io/CWG/issues/721.html">721</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD2</td>
<td>Where must a variable be initialized to be used in a constant expression?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="722">
<td><a href="https://cplusplus.github.io/CWG/issues/722.html">722</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>CD2</td>
<td>Can <TT>nullptr</TT> be passed to an ellipsis?</td>
<td class="full" align="center">Clang 20</td>
</tr>
<tr id="726">
<td><a href="https://cplusplus.github.io/CWG/issues/726.html">726</a></td>
+ <td>[<a href="https://wg21.link/intro.multithread">intro.multithread</a>]</td>
<td>CD2</td>
<td>Atomic and non-atomic objects in the memory model</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="727">
<td><a href="https://cplusplus.github.io/CWG/issues/727.html">727</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>C++17</td>
<td>In-class explicit specializations</td>
<td class="partial" align="center">Partial</td>
</tr>
<tr id="728">
<td><a href="https://cplusplus.github.io/CWG/issues/728.html">728</a></td>
+ <td>[<a href="https://wg21.link/temp">temp</a>]</td>
<td>NAD</td>
<td>Restrictions on local classes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="729">
<td><a href="https://cplusplus.github.io/CWG/issues/729.html">729</a></td>
+ <td>[<a href="https://wg21.link/except.handle">except.handle</a>]</td>
<td>CD3</td>
<td>Qualification conversions and handlers of reference-to-pointer type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="730">
<td><a href="https://cplusplus.github.io/CWG/issues/730.html">730</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>CD2</td>
<td>Explicit specializations of members of non-template classes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="731">
<td><a href="https://cplusplus.github.io/CWG/issues/731.html">731</a></td>
+ <td>[<a href="https://wg21.link/expr.ref">expr.ref</a>]</td>
<td>CD2</td>
<td>Omitted reference qualification of member function type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="732">
<td><a href="https://cplusplus.github.io/CWG/issues/732.html">732</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def">dcl.fct.def</a>]</td>
<td>CD2</td>
<td>Late-specified return types in function definitions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="733">
<td><a href="https://cplusplus.github.io/CWG/issues/733.html">733</a></td>
+ <td>[<a href="https://wg21.link/class.copy.assign">class.copy.assign</a>]</td>
<td>NAD</td>
<td>Reference qualification of copy assignment operators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="734">
<td><a href="https://cplusplus.github.io/CWG/issues/734.html">734</a></td>
+ <td>[<a href="https://wg21.link/expr.reinterpret.cast">expr.reinterpret.cast</a>]</td>
<td>CD2</td>
<td>Are unique addresses required for namespace-scope variables?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="735">
<td><a href="https://cplusplus.github.io/CWG/issues/735.html">735</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.safety">basic.stc.dynamic.safety</a>]</td>
<td>CD2</td>
<td>Missing case in specification of safely-derived pointers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="736">
<td><a href="https://cplusplus.github.io/CWG/issues/736.html">736</a></td>
+ <td>[<a href="https://wg21.link/dcl.decl">dcl.decl</a>]</td>
<td>NAD</td>
<td>Is the <TT>&amp;</TT> <I>ref-qualifier</I> needed?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="737">
<td><a href="https://cplusplus.github.io/CWG/issues/737.html">737</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.string">dcl.init.string</a>]</td>
<td>CD2</td>
<td>Uninitialized trailing characters in string initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="738">
<td><a href="https://cplusplus.github.io/CWG/issues/738.html">738</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>C++11</td>
<td><TT>constexpr</TT> not permitted by the syntax of constructor declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="739">
<td><a href="https://cplusplus.github.io/CWG/issues/739.html">739</a></td>
+ <td>[<a href="https://wg21.link/class.bit">class.bit</a>]</td>
<td>CD3</td>
<td>Signedness of plain bit-fields</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="740">
<td><a href="https://cplusplus.github.io/CWG/issues/740.html">740</a></td>
+ <td>[<a href="https://wg21.link/intro.multithread">intro.multithread</a>]</td>
<td>CD2</td>
<td>Incorrect note on data races</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="741">
<td><a href="https://cplusplus.github.io/CWG/issues/741.html">741</a></td>
+ <td>[<a href="https://wg21.link/class.bit">class.bit</a>]</td>
<td>C++11</td>
<td>&#8220;plain&#8221; <TT>long long</TT> bit-fields</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="742">
<td><a href="https://cplusplus.github.io/CWG/issues/742.html">742</a></td>
+ <td>[<a href="https://wg21.link/expr.post.incr">expr.post.incr</a>]</td>
<td>open</td>
<td>Postfix increment/decrement with long bit-field operands</td>
<td align="center">Not resolved</td>
</tr>
<tr id="743">
<td><a href="https://cplusplus.github.io/CWG/issues/743.html">743</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.general">expr.prim.general</a>]</td>
<td>CD2</td>
<td>Use of <TT>decltype</TT> in a <I>nested-name-specifier</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="744">
<td><a href="https://cplusplus.github.io/CWG/issues/744.html">744</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.template">temp.arg.template</a>]</td>
<td>CD2</td>
<td>Matching template arguments with template template parameters with parameter packs</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="745">
<td><a href="https://cplusplus.github.io/CWG/issues/745.html">745</a></td>
+ <td>[<a href="https://wg21.link/cpp.error">cpp.error</a>]</td>
<td>C++23</td>
<td>Effect of ill-formedness resulting from <TT>#error</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="746">
<td><a href="https://cplusplus.github.io/CWG/issues/746.html">746</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>CD2</td>
<td>Use of <TT>auto</TT> in <I>new-expression</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="747">
<td><a href="https://cplusplus.github.io/CWG/issues/747.html">747</a></td>
+ <td>[<a href="https://wg21.link/class.access.base">class.access.base</a>]</td>
<td>dup</td>
<td>Access of protected base classes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="749">
<td><a href="https://cplusplus.github.io/CWG/issues/749.html">749</a></td>
+ <td>[<a href="https://wg21.link/over.built">over.built</a>]</td>
<td>CD2</td>
<td>References to function types with a <I>cv-qualifier</I> or <I>ref-qualifier</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="750">
<td><a href="https://cplusplus.github.io/CWG/issues/750.html">750</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD2</td>
<td>Implementation constraints on reference-only closure objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="751">
<td><a href="https://cplusplus.github.io/CWG/issues/751.html">751</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD2</td>
<td>Deriving from closure classes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="752">
<td><a href="https://cplusplus.github.io/CWG/issues/752.html">752</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>CD2</td>
<td>Name lookup in nested <I>lambda-expression</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="753">
<td><a href="https://cplusplus.github.io/CWG/issues/753.html">753</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>CD2</td>
<td>Array names in lambda capture sets</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="754">
<td><a href="https://cplusplus.github.io/CWG/issues/754.html">754</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>CD2</td>
<td>Lambda expressions in default arguments of block-scope function declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="755">
<td><a href="https://cplusplus.github.io/CWG/issues/755.html">755</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>CD3</td>
<td>Generalized <I>lambda-capture</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="756">
<td><a href="https://cplusplus.github.io/CWG/issues/756.html">756</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD2</td>
<td>Dropping cv-qualification on members of closure objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="757">
<td><a href="https://cplusplus.github.io/CWG/issues/757.html">757</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD2</td>
<td>Types without linkage in declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="758">
<td><a href="https://cplusplus.github.io/CWG/issues/758.html">758</a></td>
+ <td>[<a href="https://wg21.link/basic.def">basic.def</a>]</td>
<td>C++11</td>
<td>Missing cases of declarations that are not definitions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="759">
<td><a href="https://cplusplus.github.io/CWG/issues/759.html">759</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD2</td>
<td>Destruction of closure objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="760">
<td><a href="https://cplusplus.github.io/CWG/issues/760.html">760</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.general">expr.prim.general</a>]</td>
<td>CD2</td>
<td><TT>this</TT> inside a nested class of a non-static member function</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="761">
<td><a href="https://cplusplus.github.io/CWG/issues/761.html">761</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD2</td>
<td>Inferred return type of closure object call operator</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="762">
<td><a href="https://cplusplus.github.io/CWG/issues/762.html">762</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>CD2</td>
<td>Name lookup in the <I>compound-statement</I> of a lambda expression</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="763">
<td><a href="https://cplusplus.github.io/CWG/issues/763.html">763</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD2</td>
<td>Is a closure object's <TT>operator()</TT> inline?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="764">
<td><a href="https://cplusplus.github.io/CWG/issues/764.html">764</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>CD2</td>
<td>Capturing unused variables in a lambda expression</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="765">
<td><a href="https://cplusplus.github.io/CWG/issues/765.html">765</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.spec">dcl.fct.spec</a>]</td>
<td>CD2</td>
<td>Local types in inline functions with external linkage</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="766">
<td><a href="https://cplusplus.github.io/CWG/issues/766.html">766</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>CD2</td>
<td>Where may lambda expressions appear?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="767">
<td><a href="https://cplusplus.github.io/CWG/issues/767.html">767</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>CD2</td>
<td><TT>void</TT> and other unnamed <I>lambda-parameter</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="768">
<td><a href="https://cplusplus.github.io/CWG/issues/768.html">768</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>CD2</td>
<td>Ellipsis in a lambda parameter list</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="769">
<td><a href="https://cplusplus.github.io/CWG/issues/769.html">769</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>CD2</td>
<td>Initialization of closure objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="770">
<td><a href="https://cplusplus.github.io/CWG/issues/770.html">770</a></td>
+ <td>[<a href="https://wg21.link/dcl.decl">dcl.decl</a>]</td>
<td>CD2</td>
<td>Ambiguity in late-specified return type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="771">
<td><a href="https://cplusplus.github.io/CWG/issues/771.html">771</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD2</td>
<td>Move-construction of reference members of closure objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="772">
<td><a href="https://cplusplus.github.io/CWG/issues/772.html">772</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>CD2</td>
<td><I>capture-default</I> in lambdas in local default arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="773">
<td><a href="https://cplusplus.github.io/CWG/issues/773.html">773</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.nontype">temp.arg.nontype</a>]</td>
<td>C++11</td>
<td>Parentheses in address non-type template arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="774">
<td><a href="https://cplusplus.github.io/CWG/issues/774.html">774</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD2</td>
<td>Can a closure class be a POD?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="775">
<td><a href="https://cplusplus.github.io/CWG/issues/775.html">775</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>CD2</td>
<td>Capturing references to functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="776">
<td><a href="https://cplusplus.github.io/CWG/issues/776.html">776</a></td>
+ <td>[<a href="https://wg21.link/basic.start.dynamic">basic.start.dynamic</a>]</td>
<td>CD2</td>
<td>Delegating constructors, destructors, and <TT>std::exit</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="777">
<td><a href="https://cplusplus.github.io/CWG/issues/777.html">777</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>CD2</td>
<td>Default arguments and parameter packs</td>
<td class="full" align="center">Clang 3.7</td>
</tr>
<tr id="778">
<td><a href="https://cplusplus.github.io/CWG/issues/778.html">778</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>C++11</td>
<td>Template parameter packs in non-type template parameters</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="779">
<td><a href="https://cplusplus.github.io/CWG/issues/779.html">779</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD2</td>
<td>Rvalue reference members of closure objects?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="782">
<td><a href="https://cplusplus.github.io/CWG/issues/782.html">782</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>CD2</td>
<td>Lambda expressions and argument-dependent lookup</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="783">
<td><a href="https://cplusplus.github.io/CWG/issues/783.html">783</a></td>
+ <td>[<a href="https://wg21.link/intro.defs">intro.defs</a>]</td>
<td>open</td>
<td>Definition of &#8220;argument&#8221;</td>
<td align="center">Not resolved</td>
</tr>
<tr id="784">
<td><a href="https://cplusplus.github.io/CWG/issues/784.html">784</a></td>
+ <td>[<a href="https://wg21.link/intro.structure">intro.structure</a>]</td>
<td>C++11</td>
<td>List of incompatibilities with the previous Standard</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="785">
<td><a href="https://cplusplus.github.io/CWG/issues/785.html">785</a></td>
+ <td>[<a href="https://wg21.link/intro.execution">intro.execution</a>]</td>
<td>CD2</td>
<td>&#8220;Execution sequence&#8221; is inappropriate phraseology</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="786">
<td><a href="https://cplusplus.github.io/CWG/issues/786.html">786</a></td>
+ <td>[<a href="https://wg21.link/intro.multithread">intro.multithread</a>]</td>
<td>CD2</td>
<td>Definition of &#8220;thread&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="787">
<td><a href="https://cplusplus.github.io/CWG/issues/787.html">787</a></td>
+ <td>[<a href="https://wg21.link/lex.phases">lex.phases</a>]</td>
<td>CD2</td>
<td>Unnecessary lexical undefined behavior</td>
<td class="full" align="center">Clang 21</td>
</tr>
<tr id="788">
<td><a href="https://cplusplus.github.io/CWG/issues/788.html">788</a></td>
+ <td>[<a href="https://wg21.link/lex.charset">lex.charset</a>]</td>
<td>CD2</td>
<td>Relationship between locale and values of the execution character set</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="789">
<td><a href="https://cplusplus.github.io/CWG/issues/789.html">789</a></td>
+ <td>[<a href="https://wg21.link/lex.trigraph">lex.trigraph</a>]</td>
<td>CD2</td>
<td>Deprecating trigraphs</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="790">
<td><a href="https://cplusplus.github.io/CWG/issues/790.html">790</a></td>
+ <td>[<a href="https://wg21.link/lex.string">lex.string</a>]</td>
<td>CD2</td>
<td>Concatenation of raw and non-raw string literals</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="792">
<td><a href="https://cplusplus.github.io/CWG/issues/792.html">792</a></td>
+ <td>[<a href="https://wg21.link/basic.start.main">basic.start.main</a>]</td>
<td>CD2</td>
<td>Effects of <TT>std::quick_exit</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="793">
<td><a href="https://cplusplus.github.io/CWG/issues/793.html">793</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>CD2</td>
<td>Use of class members during destruction</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="794">
<td><a href="https://cplusplus.github.io/CWG/issues/794.html">794</a></td>
+ <td>[<a href="https://wg21.link/conv.mem">conv.mem</a>]</td>
<td>NAD</td>
<td>Base-derived conversion in member type of pointer-to-member conversion</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="795">
<td><a href="https://cplusplus.github.io/CWG/issues/795.html">795</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>NAD</td>
<td>Dependency of lambdas on <TT>&lt;functional&gt;</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="796">
<td><a href="https://cplusplus.github.io/CWG/issues/796.html">796</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>CD2</td>
<td>Lifetime of a closure object with members captured by reference</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="797">
<td><a href="https://cplusplus.github.io/CWG/issues/797.html">797</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD2</td>
<td>Converting a no-capture lambda to a function type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="798">
<td><a href="https://cplusplus.github.io/CWG/issues/798.html">798</a></td>
+ <td>[<a href="https://wg21.link/expr.sub">expr.sub</a>]</td>
<td>C++11</td>
<td>Overloaded subscript operator described in clause 5</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="799">
<td><a href="https://cplusplus.github.io/CWG/issues/799.html">799</a></td>
+ <td>[<a href="https://wg21.link/expr.reinterpret.cast">expr.reinterpret.cast</a>]</td>
<td>CD2</td>
<td>Can <TT>reinterpret_cast</TT> be used to cast an operand to its own type?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="800">
<td><a href="https://cplusplus.github.io/CWG/issues/800.html">800</a></td>
+ <td>[<a href="https://wg21.link/expr.reinterpret.cast">expr.reinterpret.cast</a>]</td>
<td>NAD</td>
<td>Safely-derived pointers and object pointers converted from function pointers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="801">
<td><a href="https://cplusplus.github.io/CWG/issues/801.html">801</a></td>
+ <td>[<a href="https://wg21.link/expr.const.cast">expr.const.cast</a>]</td>
<td>CD2</td>
<td>Casting away constness in a cast to rvalue reference type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="803">
<td><a href="https://cplusplus.github.io/CWG/issues/803.html">803</a></td>
+ <td>[<a href="https://wg21.link/expr.sizeof">expr.sizeof</a>]</td>
<td>CD2</td>
<td><TT>sizeof</TT> an enumeration type with a fixed underlying type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="804">
<td><a href="https://cplusplus.github.io/CWG/issues/804.html">804</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD2</td>
<td>Deducing the type in <TT>new auto(x)</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="805">
<td><a href="https://cplusplus.github.io/CWG/issues/805.html">805</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD2</td>
<td>Which exception to throw for overflow in array size calculation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="806">
<td><a href="https://cplusplus.github.io/CWG/issues/806.html">806</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD2</td>
<td>Enumeration types in integral constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="807">
<td><a href="https://cplusplus.github.io/CWG/issues/807.html">807</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>NAD</td>
<td><TT>typeid</TT> expressions in constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="808">
<td><a href="https://cplusplus.github.io/CWG/issues/808.html">808</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec">dcl.spec</a>]</td>
<td>CD2</td>
<td>Non-type <I>decl-specifier</I>s versus max-munch</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="809">
<td><a href="https://cplusplus.github.io/CWG/issues/809.html">809</a></td>
+ <td>[<a href="https://wg21.link/dcl.stc">dcl.stc</a>]</td>
<td>CD2</td>
<td>Deprecation of the <TT>register</TT> keyword</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="810">
<td><a href="https://cplusplus.github.io/CWG/issues/810.html">810</a></td>
+ <td>[<a href="https://wg21.link/dcl.stc">dcl.stc</a>]</td>
<td>CD2</td>
<td>Block-scope <TT>thread_local</TT> variables should be implicitly <TT>static</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="811">
<td><a href="https://cplusplus.github.io/CWG/issues/811.html">811</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.cv">dcl.type.cv</a>]</td>
<td>CD2</td>
<td>Unclear implications of const-qualification</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="812">
<td><a href="https://cplusplus.github.io/CWG/issues/812.html">812</a></td>
+ <td>[<a href="https://wg21.link/namespace.def">namespace.def</a>]</td>
<td>CD2</td>
<td>Duplicate names in inline namespaces</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="813">
<td><a href="https://cplusplus.github.io/CWG/issues/813.html">813</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>open</td>
<td><TT>typename</TT> in a <I>using-declaration</I> with a non-dependent name</td>
<td align="center">Not resolved</td>
</tr>
<tr id="814">
<td><a href="https://cplusplus.github.io/CWG/issues/814.html">814</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr">dcl.attr</a>]</td>
<td>CD2</td>
<td>Attribute to indicate that a function throws nothing</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="815">
<td><a href="https://cplusplus.github.io/CWG/issues/815.html">815</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.grammar">dcl.attr.grammar</a>]</td>
<td>CD2</td>
<td>Parameter pack expansion inside attributes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="816">
<td><a href="https://cplusplus.github.io/CWG/issues/816.html">816</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.final">dcl.attr.final</a>]</td>
<td>CD2</td>
<td>Diagnosing violations of <TT>[[final]]</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="817">
<td><a href="https://cplusplus.github.io/CWG/issues/817.html">817</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.final">dcl.attr.final</a>]</td>
<td>CD2</td>
<td>Meaning of <TT>[[final]]</TT> applied to a class definition</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="818">
<td><a href="https://cplusplus.github.io/CWG/issues/818.html">818</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>CD2</td>
<td>Function parameter packs in non-final positions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="819">
<td><a href="https://cplusplus.github.io/CWG/issues/819.html">819</a></td>
+ <td>[<a href="https://wg21.link/special">special</a>]</td>
<td>NAD</td>
<td>Access control and deleted implicitly-declared special member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="820">
<td><a href="https://cplusplus.github.io/CWG/issues/820.html">820</a></td>
+ <td>[<a href="https://wg21.link/temp">temp</a>]</td>
<td>CD2</td>
<td>Deprecation of <TT>export</TT></td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="822">
<td><a href="https://cplusplus.github.io/CWG/issues/822.html">822</a></td>
+ <td>[<a href="https://wg21.link/temp">temp</a>]</td>
<td>NAD</td>
<td>Additional contexts for template aliases</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="823">
<td><a href="https://cplusplus.github.io/CWG/issues/823.html">823</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.nontype">temp.arg.nontype</a>]</td>
<td>CD2</td>
<td>Literal types with constexpr conversions as non-type template arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="828">
<td><a href="https://cplusplus.github.io/CWG/issues/828.html">828</a></td>
+ <td>[<a href="https://wg21.link/except.throw">except.throw</a>]</td>
<td>CD2</td>
<td>Destruction of exception objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="829">
<td><a href="https://cplusplus.github.io/CWG/issues/829.html">829</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>NAD</td>
<td>At what point is <TT>std::unexpected</TT> called?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="830">
<td><a href="https://cplusplus.github.io/CWG/issues/830.html">830</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>CD2</td>
<td>Deprecating exception specifications</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="831">
<td><a href="https://cplusplus.github.io/CWG/issues/831.html">831</a></td>
+ <td>[<a href="https://wg21.link/implimits">implimits</a>]</td>
<td>CD2</td>
<td>Limit on recursively nested template instantiations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="832">
<td><a href="https://cplusplus.github.io/CWG/issues/832.html">832</a></td>
+ <td>[<a href="https://wg21.link/lex.ppnumber">lex.ppnumber</a>]</td>
<td>CD2</td>
<td>Value of preprocessing numbers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="833">
<td><a href="https://cplusplus.github.io/CWG/issues/833.html">833</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>CD2</td>
<td>Explicit conversion of a scoped enumeration value to a floating type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="834">
<td><a href="https://cplusplus.github.io/CWG/issues/834.html">834</a></td>
+ <td>[<a href="https://wg21.link/lex.string">lex.string</a>]</td>
<td>CD2</td>
<td>What is an &#8220;ordinary string literal&#8221;?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="835">
<td><a href="https://cplusplus.github.io/CWG/issues/835.html">835</a></td>
+ <td>[<a href="https://wg21.link/expr">expr</a>]</td>
<td>CD2</td>
<td>Scoped enumerations and the &#8220;usual arithmetic conversions&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="836">
<td><a href="https://cplusplus.github.io/CWG/issues/836.html">836</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.noreturn">dcl.attr.noreturn</a>]</td>
<td>NAD</td>
<td><TT>[[noreturn]]</TT> applied to function types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="837">
<td><a href="https://cplusplus.github.io/CWG/issues/837.html">837</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>C++11</td>
<td>Constexpr functions and <TT>return</TT> <I>braced-init-list</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="838">
<td><a href="https://cplusplus.github.io/CWG/issues/838.html">838</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>C++11</td>
<td>Use of <TT>this</TT> in a <I>brace-or-equal-initializer</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="839">
<td><a href="https://cplusplus.github.io/CWG/issues/839.html">839</a></td>
+ <td>[<a href="https://wg21.link/expr.sizeof">expr.sizeof</a>]</td>
<td>dup</td>
<td><TT>sizeof</TT> with opaque enumerations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="840">
<td><a href="https://cplusplus.github.io/CWG/issues/840.html">840</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>CD2</td>
<td>Rvalue references as nontype template parameters</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="842">
<td><a href="https://cplusplus.github.io/CWG/issues/842.html">842</a></td>
+ <td>[<a href="https://wg21.link/expr.reinterpret.cast">expr.reinterpret.cast</a>]</td>
<td>CD2</td>
<td>Casting to rvalue reference type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="845">
<td><a href="https://cplusplus.github.io/CWG/issues/845.html">845</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def">dcl.fct.def</a>]</td>
<td>CD2</td>
<td>What is the &#8220;first declaration&#8221; of an explicit specialization?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="846">
<td><a href="https://cplusplus.github.io/CWG/issues/846.html">846</a></td>
+ <td>[<a href="https://wg21.link/basic.lval">basic.lval</a>]</td>
<td>CD2</td>
<td>Rvalue references to functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="847">
<td><a href="https://cplusplus.github.io/CWG/issues/847.html">847</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>CD2</td>
<td>Error in rvalue reference deduction example</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="850">
<td><a href="https://cplusplus.github.io/CWG/issues/850.html">850</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.general">expr.prim.general</a>]</td>
<td>CD2</td>
<td>Restrictions on use of non-static data members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="852">
<td><a href="https://cplusplus.github.io/CWG/issues/852.html">852</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>CD6</td>
<td><I>using-declaration</I>s and dependent base classes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="853">
<td><a href="https://cplusplus.github.io/CWG/issues/853.html">853</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.safety">basic.stc.dynamic.safety</a>]</td>
<td>CD2</td>
<td>Support for relaxed pointer safety</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="854">
<td><a href="https://cplusplus.github.io/CWG/issues/854.html">854</a></td>
+ <td>[<a href="https://wg21.link/expr.shift">expr.shift</a>]</td>
<td>CD2</td>
<td>Left shift and unsigned extended types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="855">
<td><a href="https://cplusplus.github.io/CWG/issues/855.html">855</a></td>
+ <td>[<a href="https://wg21.link/expr.assign">expr.assign</a>]</td>
<td>CD2</td>
<td>Incorrect comments in <I>braced-init-list</I> assignment example</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="858">
<td><a href="https://cplusplus.github.io/CWG/issues/858.html">858</a></td>
+ <td>[<a href="https://wg21.link/expr">expr</a>]</td>
<td>CD2</td>
<td>Example binding an rvalue reference to an lvalue</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="860">
<td><a href="https://cplusplus.github.io/CWG/issues/860.html">860</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>C++11</td>
<td>Explicit qualification of constexpr member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="861">
<td><a href="https://cplusplus.github.io/CWG/issues/861.html">861</a></td>
+ <td>[<a href="https://wg21.link/namespace.qual">namespace.qual</a>]</td>
<td>CD2</td>
<td>Unintended ambiguity in inline namespace lookup</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="862">
<td><a href="https://cplusplus.github.io/CWG/issues/862.html">862</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>CD2</td>
<td>Undefined behavior with enumerator value overflow</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="863">
<td><a href="https://cplusplus.github.io/CWG/issues/863.html">863</a></td>
+ <td>[<a href="https://wg21.link/expr.post">expr.post</a>]</td>
<td>CD2</td>
<td>Rvalue reference cast to incomplete type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="864">
<td><a href="https://cplusplus.github.io/CWG/issues/864.html">864</a></td>
+ <td>[<a href="https://wg21.link/stmt.ranged">stmt.ranged</a>]</td>
<td>C++11</td>
<td><I>braced-init-list</I> in the range-based <TT>for</TT> statement</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="865">
<td><a href="https://cplusplus.github.io/CWG/issues/865.html">865</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD2</td>
<td>Initializing a <TT>std::initializer_list</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="869">
<td><a href="https://cplusplus.github.io/CWG/issues/869.html">869</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD2</td>
<td>Uninitialized <TT>thread_local</TT> objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="872">
<td><a href="https://cplusplus.github.io/CWG/issues/872.html">872</a></td>
+ <td>[<a href="https://wg21.link/lex.string">lex.string</a>]</td>
<td>CD2</td>
<td>Lexical issues with raw strings</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="873">
<td><a href="https://cplusplus.github.io/CWG/issues/873.html">873</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>C++11</td>
<td>Deducing rvalue references in declarative contexts</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="874">
<td><a href="https://cplusplus.github.io/CWG/issues/874.html">874</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD2</td>
<td>Class-scope definitions of enumeration types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="876">
<td><a href="https://cplusplus.github.io/CWG/issues/876.html">876</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>CD2</td>
<td>Type references in rvalue reference deduction specification</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="877">
<td><a href="https://cplusplus.github.io/CWG/issues/877.html">877</a></td>
+ <td>[<a href="https://wg21.link/over.match.viable">over.match.viable</a>]</td>
<td>CD2</td>
<td>Viable functions and binding references to rvalues</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="879">
<td><a href="https://cplusplus.github.io/CWG/issues/879.html">879</a></td>
+ <td>[<a href="https://wg21.link/over.built">over.built</a>]</td>
<td>CD2</td>
<td>Missing built-in comparison operators for pointer types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="880">
<td><a href="https://cplusplus.github.io/CWG/issues/880.html">880</a></td>
+ <td>[<a href="https://wg21.link/over.built">over.built</a>]</td>
<td>CD2</td>
<td>Built-in conditional operator for scoped enumerations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="882">
<td><a href="https://cplusplus.github.io/CWG/issues/882.html">882</a></td>
+ <td>[<a href="https://wg21.link/basic.start.main">basic.start.main</a>]</td>
<td>CD2</td>
<td>Defining <TT>main</TT> as deleted</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="883">
<td><a href="https://cplusplus.github.io/CWG/issues/883.html">883</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>CD2</td>
<td><TT>std::memcpy</TT> vs <TT>std::memmove</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="884">
<td><a href="https://cplusplus.github.io/CWG/issues/884.html">884</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>CD2</td>
<td>Defining an explicitly-specialized static data member</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="885">
<td><a href="https://cplusplus.github.io/CWG/issues/885.html">885</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.partial">temp.deduct.partial</a>]</td>
<td>NAD</td>
<td>Partial ordering of function templates with unordered parameter pairs</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="886">
<td><a href="https://cplusplus.github.io/CWG/issues/886.html">886</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>CD2</td>
<td>Member initializers and aggregates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="887">
<td><a href="https://cplusplus.github.io/CWG/issues/887.html">887</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>CD2</td>
<td>Move construction of thrown object</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="888">
<td><a href="https://cplusplus.github.io/CWG/issues/888.html">888</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>CD2</td>
<td>Union member initializers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="891">
<td><a href="https://cplusplus.github.io/CWG/issues/891.html">891</a></td>
+ <td>[<a href="https://wg21.link/expr.const.cast">expr.const.cast</a>]</td>
<td>CD2</td>
<td><TT>const_cast</TT> to rvalue reference from objectless rvalue</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="892">
<td><a href="https://cplusplus.github.io/CWG/issues/892.html">892</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>C++11</td>
<td>Missing requirements for constexpr constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="893">
<td><a href="https://cplusplus.github.io/CWG/issues/893.html">893</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>NAD</td>
<td>Brace syntax for <I>enumerator-definition</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="896">
<td><a href="https://cplusplus.github.io/CWG/issues/896.html">896</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD2</td>
<td>Rvalue references and rvalue-reference conversion functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="897">
<td><a href="https://cplusplus.github.io/CWG/issues/897.html">897</a></td>
+ <td>[<a href="https://wg21.link/cpp.pragma.op">cpp.pragma.op</a>]</td>
<td>open</td>
<td><TT>_Pragma</TT> and extended <I>string-literal</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr id="898">
<td><a href="https://cplusplus.github.io/CWG/issues/898.html">898</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>C++11</td>
<td>Declarations in constexpr functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="899">
<td><a href="https://cplusplus.github.io/CWG/issues/899.html">899</a></td>
+ <td>[<a href="https://wg21.link/over.match.copy">over.match.copy</a>]</td>
<td>CD2</td>
<td>Explicit conversion functions in direct class initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="900">
<td><a href="https://cplusplus.github.io/CWG/issues/900.html">900</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>C++23</td>
<td>Lifetime of temporaries in range-based <TT>for</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="901">
<td><a href="https://cplusplus.github.io/CWG/issues/901.html">901</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>open</td>
<td>Deleted <TT>operator delete</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr id="902">
<td><a href="https://cplusplus.github.io/CWG/issues/902.html">902</a></td>
+ <td>[<a href="https://wg21.link/class.static.data">class.static.data</a>]</td>
<td>NAD</td>
<td>In-class initialization of non-constant static data members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="903">
<td><a href="https://cplusplus.github.io/CWG/issues/903.html">903</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.constexpr">temp.dep.constexpr</a>]</td>
<td>CD3</td>
<td>Value-dependent integral null pointer constants</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="904">
<td><a href="https://cplusplus.github.io/CWG/issues/904.html">904</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>CD2</td>
<td>Parameter packs in <I>lambda-capture</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="905">
<td><a href="https://cplusplus.github.io/CWG/issues/905.html">905</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>CD2</td>
<td>Explicit defaulted copy constructors and trivial copyability</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="906">
<td><a href="https://cplusplus.github.io/CWG/issues/906.html">906</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def">dcl.fct.def</a>]</td>
<td>CD2</td>
<td>Which special member functions can be defaulted?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="908">
<td><a href="https://cplusplus.github.io/CWG/issues/908.html">908</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def">dcl.fct.def</a>]</td>
<td>CD2</td>
<td>Deleted global allocation and deallocation functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="909">
<td><a href="https://cplusplus.github.io/CWG/issues/909.html">909</a></td>
+ <td>[<a href="https://wg21.link/expr.cast">expr.cast</a>]</td>
<td>NAD</td>
<td>Old-style casts with conversion functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="910">
<td><a href="https://cplusplus.github.io/CWG/issues/910.html">910</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>CD2</td>
<td>Move constructors and implicitly-declared copy constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="912">
<td><a href="https://cplusplus.github.io/CWG/issues/912.html">912</a></td>
+ <td>[<a href="https://wg21.link/lex.ccon">lex.ccon</a>]</td>
<td>CD3</td>
<td>Character literals and <I>universal-character-name</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="913">
<td><a href="https://cplusplus.github.io/CWG/issues/913.html">913</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.conv">temp.deduct.conv</a>]</td>
<td>CD2</td>
<td>Deduction rules for array- and function-type conversion functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="914">
<td><a href="https://cplusplus.github.io/CWG/issues/914.html">914</a></td>
+ <td>[<a href="https://wg21.link/expr.type.conv">expr.type.conv</a>]</td>
<td>open</td>
<td>Value-initialization of array types</td>
<td align="center">Not resolved</td>
</tr>
<tr id="915">
<td><a href="https://cplusplus.github.io/CWG/issues/915.html">915</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def">dcl.fct.def</a>]</td>
<td>CD2</td>
<td>Deleted specializations of member function templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="919">
<td><a href="https://cplusplus.github.io/CWG/issues/919.html">919</a></td>
+ <td>[<a href="https://wg21.link/namespace.def">namespace.def</a>]</td>
<td>CD2</td>
<td>Contradictions regarding inline namespaces</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="920">
<td><a href="https://cplusplus.github.io/CWG/issues/920.html">920</a></td>
+ <td>[<a href="https://wg21.link/dcl.meaning">dcl.meaning</a>]</td>
<td>CD2</td>
<td>Interaction of inline namespaces and <I>using-declaration</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="921">
<td><a href="https://cplusplus.github.io/CWG/issues/921.html">921</a></td>
+ <td>[<a href="https://wg21.link/namespace.def">namespace.def</a>]</td>
<td>CD2</td>
<td>Unclear specification of inline namespaces</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="922">
<td><a href="https://cplusplus.github.io/CWG/issues/922.html">922</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>CD2</td>
<td>Implicit default constructor definitions and <TT>const</TT> variant members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="923">
<td><a href="https://cplusplus.github.io/CWG/issues/923.html">923</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>CD2</td>
<td>Inline explicit specializations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="924">
<td><a href="https://cplusplus.github.io/CWG/issues/924.html">924</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>C++11</td>
<td><I>alias-declaration</I> as a class member</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="925">
<td><a href="https://cplusplus.github.io/CWG/issues/925.html">925</a></td>
+ <td>[<a href="https://wg21.link/cpp.cond">cpp.cond</a>]</td>
<td>open</td>
<td>Type of character literals in preprocessor expressions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="926">
<td><a href="https://cplusplus.github.io/CWG/issues/926.html">926</a></td>
+ <td>[<a href="https://wg21.link/namespace.unnamed">namespace.unnamed</a>]</td>
<td>CD2</td>
<td>Inline unnamed namespaces</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="927">
<td><a href="https://cplusplus.github.io/CWG/issues/927.html">927</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>CD2</td>
<td>Implicitly-deleted default constructors and member initializers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="928">
<td><a href="https://cplusplus.github.io/CWG/issues/928.html">928</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def">dcl.fct.def</a>]</td>
<td>CD2</td>
<td>Defaulting a function that would be implicitly defined as deleted</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="929">
<td><a href="https://cplusplus.github.io/CWG/issues/929.html">929</a></td>
+ <td>[<a href="https://wg21.link/temp.alias">temp.alias</a>]</td>
<td>CD2</td>
<td>What is a template alias?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="930">
<td><a href="https://cplusplus.github.io/CWG/issues/930.html">930</a></td>
+ <td>[<a href="https://wg21.link/expr.alignof">expr.alignof</a>]</td>
<td>CD2</td>
<td><TT>alignof</TT> with incomplete array type</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="931">
<td><a href="https://cplusplus.github.io/CWG/issues/931.html">931</a></td>
+ <td>[<a href="https://wg21.link/lex.ext">lex.ext</a>]</td>
<td>CD2</td>
<td>Confusing reference to the length of a user-defined string literal</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="932">
<td><a href="https://cplusplus.github.io/CWG/issues/932.html">932</a></td>
+ <td>[<a href="https://wg21.link/lex.string">lex.string</a>]</td>
<td>CD2</td>
<td>UCNs in closing delimiters of raw string literals</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="933">
<td><a href="https://cplusplus.github.io/CWG/issues/933.html">933</a></td>
+ <td>[<a href="https://wg21.link/lex.ccon">lex.ccon</a>]</td>
<td>CD2</td>
<td>32-bit UCNs with 16-bit <TT>wchar_t</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="934">
<td><a href="https://cplusplus.github.io/CWG/issues/934.html">934</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD2</td>
<td>List-initialization of references</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="935">
<td><a href="https://cplusplus.github.io/CWG/issues/935.html">935</a></td>
+ <td>[<a href="https://wg21.link/over.literal">over.literal</a>]</td>
<td>CD2</td>
<td>Missing overloads for character types for user-defined literals</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="936">
<td><a href="https://cplusplus.github.io/CWG/issues/936.html">936</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.string">dcl.init.string</a>]</td>
<td>CD2</td>
<td>Array initialization with new string literals</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="937">
<td><a href="https://cplusplus.github.io/CWG/issues/937.html">937</a></td>
+ <td>[<a href="https://wg21.link/lex.ext">lex.ext</a>]</td>
<td>NAD</td>
<td>Restrictions on values of template arguments in user-defined literals</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="938">
<td><a href="https://cplusplus.github.io/CWG/issues/938.html">938</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>C++11</td>
<td>Initializer lists and array new</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="939">
<td><a href="https://cplusplus.github.io/CWG/issues/939.html">939</a></td>
+ <td>[<a href="https://wg21.link/class.virtual">class.virtual</a>]</td>
<td>CD2</td>
<td>Explicitly checking virtual function overriding</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="940">
<td><a href="https://cplusplus.github.io/CWG/issues/940.html">940</a></td>
+ <td>[<a href="https://wg21.link/dcl.stc">dcl.stc</a>]</td>
<td>CD2</td>
<td>Global anonymous unions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="941">
<td><a href="https://cplusplus.github.io/CWG/issues/941.html">941</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>C++11</td>
<td>Explicit specialization of deleted function template</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="942">
<td><a href="https://cplusplus.github.io/CWG/issues/942.html">942</a></td>
+ <td>[<a href="https://wg21.link/basic.pre">basic.pre</a>]</td>
<td>CD2</td>
<td>Is <TT>this</TT> an entity?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="943">
<td><a href="https://cplusplus.github.io/CWG/issues/943.html">943</a></td>
+ <td>[<a href="https://wg21.link/expr.type.conv">expr.type.conv</a>]</td>
<td>CD5</td>
<td>Is <TT>T()</TT> a temporary?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="944">
<td><a href="https://cplusplus.github.io/CWG/issues/944.html">944</a></td>
+ <td>[<a href="https://wg21.link/expr.reinterpret.cast">expr.reinterpret.cast</a>]</td>
<td>NAD</td>
<td><TT>reinterpret_cast</TT> for all types with the same size and alignment</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="945">
<td><a href="https://cplusplus.github.io/CWG/issues/945.html">945</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.general">expr.prim.general</a>]</td>
<td>C++11</td>
<td>Use of <TT>this</TT> in a late-specified return type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="946">
<td><a href="https://cplusplus.github.io/CWG/issues/946.html">946</a></td>
+ <td>[<a href="https://wg21.link/basic.start.dynamic">basic.start.dynamic</a>]</td>
<td>CD2</td>
<td>Order of destruction of local static objects and calls to <TT>std::atexit</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="947">
<td><a href="https://cplusplus.github.io/CWG/issues/947.html">947</a></td>
+ <td>[<a href="https://wg21.link/temp.over">temp.over</a>]</td>
<td>NAD</td>
<td>Deducing type template arguments from default function arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="948">
<td><a href="https://cplusplus.github.io/CWG/issues/948.html">948</a></td>
+ <td>[<a href="https://wg21.link/stmt.select">stmt.select</a>]</td>
<td>C++11</td>
<td><TT>constexpr</TT> in <I>condition</I>s</td>
<td class="full" align="center">Clang 3.7</td>
</tr>
<tr class="open" id="949">
<td><a href="https://cplusplus.github.io/CWG/issues/949.html">949</a></td>
+ <td>[<a href="https://wg21.link/intro.compliance">intro.compliance</a>]</td>
<td>open</td>
<td>Requirements for freestanding implementations</td>
<td align="center">Not resolved</td>
</tr>
<tr id="950">
<td><a href="https://cplusplus.github.io/CWG/issues/950.html">950</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.simple">dcl.type.simple</a>]</td>
<td>CD2</td>
<td>Use of <TT>decltype</TT> as a <I>class-name</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="951">
<td><a href="https://cplusplus.github.io/CWG/issues/951.html">951</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr">dcl.attr</a>]</td>
<td>CD2</td>
<td>Problems with <I>attribute-specifier</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="952">
<td><a href="https://cplusplus.github.io/CWG/issues/952.html">952</a></td>
+ <td>[<a href="https://wg21.link/class.access.base">class.access.base</a>]</td>
<td>CD6</td>
<td>Insufficient description of &#8220;naming class&#8221;</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="953">
<td><a href="https://cplusplus.github.io/CWG/issues/953.html">953</a></td>
+ <td>[<a href="https://wg21.link/over.ics.ref">over.ics.ref</a>]</td>
<td>CD2</td>
<td>Rvalue references and function viability</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="954">
<td><a href="https://cplusplus.github.io/CWG/issues/954.html">954</a></td>
+ <td>[<a href="https://wg21.link/over.built">over.built</a>]</td>
<td>open</td>
<td>Overload resolution of conversion operator templates with built-in types</td>
<td align="center">Not resolved</td>
</tr>
<tr id="955">
<td><a href="https://cplusplus.github.io/CWG/issues/955.html">955</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD2</td>
<td>Can a closure type's <TT>operator()</TT> be virtual?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="956">
<td><a href="https://cplusplus.github.io/CWG/issues/956.html">956</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>CD2</td>
<td>Function prototype scope with late-specified return types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="957">
<td><a href="https://cplusplus.github.io/CWG/issues/957.html">957</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.grammar">dcl.attr.grammar</a>]</td>
<td>CD2</td>
<td>Alternative tokens and <I>attribute-token</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="958">
<td><a href="https://cplusplus.github.io/CWG/issues/958.html">958</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>NAD</td>
<td>Lambdas and <TT>decltype</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="959">
<td><a href="https://cplusplus.github.io/CWG/issues/959.html">959</a></td>
+ <td>[<a href="https://wg21.link/dcl.align">dcl.align</a>]</td>
<td>CD2</td>
<td>Alignment attribute for class and enumeration types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="960">
<td><a href="https://cplusplus.github.io/CWG/issues/960.html">960</a></td>
+ <td>[<a href="https://wg21.link/class.virtual">class.virtual</a>]</td>
<td>CD2</td>
<td>Covariant functions and lvalue/rvalue references</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="961">
<td><a href="https://cplusplus.github.io/CWG/issues/961.html">961</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>CD2</td>
<td>Overload resolution and conversion of <TT>std::nullptr_t</TT> to <TT>bool</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="962">
<td><a href="https://cplusplus.github.io/CWG/issues/962.html">962</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.elab">dcl.type.elab</a>]</td>
<td>CD2</td>
<td>Attributes appertaining to class and enum types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="963">
<td><a href="https://cplusplus.github.io/CWG/issues/963.html">963</a></td>
+ <td>[<a href="https://wg21.link/expr.rel">expr.rel</a>]</td>
<td>CD2</td>
<td>Comparing <TT>nullptr</TT> with 0</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="964">
<td><a href="https://cplusplus.github.io/CWG/issues/964.html">964</a></td>
+ <td>[<a href="https://wg21.link/basic.lval">basic.lval</a>]</td>
<td>C++11</td>
<td>Incorrect description of when the lvalue-to-rvalue conversion applies</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="965">
<td><a href="https://cplusplus.github.io/CWG/issues/965.html">965</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.depend">dcl.attr.depend</a>]</td>
<td>CD2</td>
<td>Limiting the applicability of the <TT>carries_dependency</TT> attribute</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="966">
<td><a href="https://cplusplus.github.io/CWG/issues/966.html">966</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD2</td>
<td>Nested types without linkage</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="967">
<td><a href="https://cplusplus.github.io/CWG/issues/967.html">967</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic">basic.stc.dynamic</a>]</td>
<td>NAD</td>
<td>Exception specification of replacement allocation function</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="968">
<td><a href="https://cplusplus.github.io/CWG/issues/968.html">968</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.grammar">dcl.attr.grammar</a>]</td>
<td>CD2</td>
<td>Syntactic ambiguity of the attribute notation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="969">
<td><a href="https://cplusplus.github.io/CWG/issues/969.html">969</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>CD2</td>
<td>Explicit instantiation declarations of class template specializations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="970">
<td><a href="https://cplusplus.github.io/CWG/issues/970.html">970</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr">dcl.attr</a>]</td>
<td>CD2</td>
<td>Consistent use of &#8220;appertain&#8221; and &#8220;apply&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="971">
<td><a href="https://cplusplus.github.io/CWG/issues/971.html">971</a></td>
+ <td>[<a href="https://wg21.link/except.handle">except.handle</a>]</td>
<td>C++11</td>
<td>Incorrect treatment of <I>exception-declaration</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="972">
<td><a href="https://cplusplus.github.io/CWG/issues/972.html">972</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.grammar">dcl.attr.grammar</a>]</td>
<td>C++11</td>
<td>Allowing multiple <I>attribute-specifier</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="973">
<td><a href="https://cplusplus.github.io/CWG/issues/973.html">973</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>CD2</td>
<td>Function types in <I>exception-specification</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="974">
<td><a href="https://cplusplus.github.io/CWG/issues/974.html">974</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>CD3</td>
<td>Default arguments for lambdas</td>
<td class="full" align="center">Clang 3.3</td>
</tr>
<tr id="975">
<td><a href="https://cplusplus.github.io/CWG/issues/975.html">975</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>CD3</td>
<td>Restrictions on return type deduction for lambdas</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="976">
<td><a href="https://cplusplus.github.io/CWG/issues/976.html">976</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.conv">temp.deduct.conv</a>]</td>
<td>CD2</td>
<td>Deduction for <TT>const T&amp;</TT> conversion operators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="977">
<td><a href="https://cplusplus.github.io/CWG/issues/977.html">977</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>CD3</td>
<td>When is an enumeration type complete?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="978">
<td><a href="https://cplusplus.github.io/CWG/issues/978.html">978</a></td>
+ <td>[<a href="https://wg21.link/over.best.ics">over.best.ics</a>]</td>
<td>CD2</td>
<td>Incorrect specification for copy initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="979">
<td><a href="https://cplusplus.github.io/CWG/issues/979.html">979</a></td>
+ <td>[<a href="https://wg21.link/dcl.decl">dcl.decl</a>]</td>
<td>CD2</td>
<td>Position of <I>attribute-specifier</I> in declarator syntax</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="980">
<td><a href="https://cplusplus.github.io/CWG/issues/980.html">980</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>CD2</td>
<td>Explicit instantiation of a member of a class template</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="981">
<td><a href="https://cplusplus.github.io/CWG/issues/981.html">981</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>C++11</td>
<td>Constexpr constructor templates and literal types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="982">
<td><a href="https://cplusplus.github.io/CWG/issues/982.html">982</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>NAD</td>
<td>Initialization with an empty initializer list</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="983">
<td><a href="https://cplusplus.github.io/CWG/issues/983.html">983</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.op">expr.unary.op</a>]</td>
<td>CD2</td>
<td>Ambiguous pointer-to-member constant</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="984">
<td><a href="https://cplusplus.github.io/CWG/issues/984.html">984</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>CD2</td>
<td>&#8220;Deduced type&#8221; is unclear in <TT>auto</TT> type deduction</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="985">
<td><a href="https://cplusplus.github.io/CWG/issues/985.html">985</a></td>
+ <td>[<a href="https://wg21.link/lex.digraph">lex.digraph</a>]</td>
<td>C++11</td>
<td>Alternative tokens and user-defined literals</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="986">
<td><a href="https://cplusplus.github.io/CWG/issues/986.html">986</a></td>
+ <td>[<a href="https://wg21.link/namespace.udir">namespace.udir</a>]</td>
<td>CD2</td>
<td>Transitivity of <I>using-directive</I>s versus qualified lookup</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="987">
<td><a href="https://cplusplus.github.io/CWG/issues/987.html">987</a></td>
+ <td>[<a href="https://wg21.link/basic.namespace">basic.namespace</a>]</td>
<td>CD4</td>
<td>Which declarations introduce namespace members?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="988">
<td><a href="https://cplusplus.github.io/CWG/issues/988.html">988</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.simple">dcl.type.simple</a>]</td>
<td>CD2</td>
<td>Reference-to-reference collapsing with <TT>decltype</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="989">
<td><a href="https://cplusplus.github.io/CWG/issues/989.html">989</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD2</td>
<td>Misplaced list-initialization example</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="990">
<td><a href="https://cplusplus.github.io/CWG/issues/990.html">990</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD2</td>
<td>Value initialization with multiple initializer-list constructors</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="991">
<td><a href="https://cplusplus.github.io/CWG/issues/991.html">991</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>CD2</td>
<td>Reference parameters of constexpr functions and constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="992">
<td><a href="https://cplusplus.github.io/CWG/issues/992.html">992</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>NAD</td>
<td>Inheriting explicitness</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="993">
<td><a href="https://cplusplus.github.io/CWG/issues/993.html">993</a></td>
+ <td>[<a href="https://wg21.link/temp.point">temp.point</a>]</td>
<td>C++11</td>
<td>Freedom to perform instantiation at the end of the translation unit</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="994">
<td><a href="https://cplusplus.github.io/CWG/issues/994.html">994</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>C++11</td>
<td><I>braced-init-list</I> as a default argument</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="995">
<td><a href="https://cplusplus.github.io/CWG/issues/995.html">995</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>CD2</td>
<td>Incorrect example for <I>using-declaration</I> and explicit instantiation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="996">
<td><a href="https://cplusplus.github.io/CWG/issues/996.html">996</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial">temp.spec.partial</a>]</td>
<td>C++11</td>
<td>Ambiguous partial specializations of member class templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="997">
<td><a href="https://cplusplus.github.io/CWG/issues/997.html">997</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>C++11</td>
<td>Argument-dependent lookup and dependent function template parameter types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="998">
<td><a href="https://cplusplus.github.io/CWG/issues/998.html">998</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>dup</td>
<td>Function parameter transformations and template functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="999">
<td><a href="https://cplusplus.github.io/CWG/issues/999.html">999</a></td>
+ <td>[<a href="https://wg21.link/over.match">over.match</a>]</td>
<td>CD2</td>
<td>&#8220;Implicit&#8221; or &#8220;implied&#8221; object argument/parameter?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1000">
<td><a href="https://cplusplus.github.io/CWG/issues/1000.html">1000</a></td>
+ <td>[<a href="https://wg21.link/class.qual">class.qual</a>]</td>
<td>CD2</td>
<td>Mistaking member typedefs for constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1001">
<td><a href="https://cplusplus.github.io/CWG/issues/1001.html">1001</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>review</td>
<td>Parameter type adjustment in dependent parameter types</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1002">
<td><a href="https://cplusplus.github.io/CWG/issues/1002.html">1002</a></td>
+ <td>[<a href="https://wg21.link/temp.variadic">temp.variadic</a>]</td>
<td>NAD</td>
<td>Pack expansion for function arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1003">
<td><a href="https://cplusplus.github.io/CWG/issues/1003.html">1003</a></td>
+ <td>[<a href="https://wg21.link/basic.start.main">basic.start.main</a>]</td>
<td>CD3</td>
<td>Acceptable definitions of <TT>main</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1004">
<td><a href="https://cplusplus.github.io/CWG/issues/1004.html">1004</a></td>
+ <td>[<a href="https://wg21.link/temp.local">temp.local</a>]</td>
<td>C++11</td>
<td>Injected-class-names as arguments for template template parameters</td>
<td class="full" align="center">Clang 5</td>
</tr>
<tr id="1005">
<td><a href="https://cplusplus.github.io/CWG/issues/1005.html">1005</a></td>
+ <td>[<a href="https://wg21.link/class.mfct.non.static">class.mfct.non.static</a>]</td>
<td>NAD</td>
<td>Qualified name resolution in member functions of class templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1006">
<td><a href="https://cplusplus.github.io/CWG/issues/1006.html">1006</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>C++11</td>
<td><TT>std::nullptr_t</TT> as a non-type template parameter</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1007">
<td><a href="https://cplusplus.github.io/CWG/issues/1007.html">1007</a></td>
+ <td>[<a href="https://wg21.link/class.protected">class.protected</a>]</td>
<td>NAD</td>
<td>Protected access and pointers to members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1008">
<td><a href="https://cplusplus.github.io/CWG/issues/1008.html">1008</a></td>
+ <td>[<a href="https://wg21.link/expr.alignof">expr.alignof</a>]</td>
<td>NAD</td>
<td>Querying the alignment of an object</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1009">
<td><a href="https://cplusplus.github.io/CWG/issues/1009.html">1009</a></td>
+ <td>[<a href="https://wg21.link/temp">temp</a>]</td>
<td>C++11</td>
<td>Missing cases in the <I>declarator-id</I> of a function template declaration</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1010">
<td><a href="https://cplusplus.github.io/CWG/issues/1010.html">1010</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD2</td>
<td>Address of object with dynamic storage duration in constant expression</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1011">
<td><a href="https://cplusplus.github.io/CWG/issues/1011.html">1011</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>C++11</td>
<td>Standard conversions that cannot be inverted</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1012">
<td><a href="https://cplusplus.github.io/CWG/issues/1012.html">1012</a></td>
+ <td>[<a href="https://wg21.link/namespace.unnamed">namespace.unnamed</a>]</td>
<td>C++11</td>
<td>Undeprecating <TT>static</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1013">
<td><a href="https://cplusplus.github.io/CWG/issues/1013.html">1013</a></td>
+ <td>[<a href="https://wg21.link/conv.lval">conv.lval</a>]</td>
<td>CD3</td>
<td>Uninitialized <TT>std::nullptr_t</TT> objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1014">
<td><a href="https://cplusplus.github.io/CWG/issues/1014.html">1014</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>NAD</td>
<td>Overload resolution between <TT>const T&amp;</TT> and <TT>T&amp;&amp;</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1015">
<td><a href="https://cplusplus.github.io/CWG/issues/1015.html">1015</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>C++11</td>
<td>Template arguments and argument-dependent lookup</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1016">
<td><a href="https://cplusplus.github.io/CWG/issues/1016.html">1016</a></td>
+ <td>[<a href="https://wg21.link/over">over</a>]</td>
<td>C++11</td>
<td>Overloadable declarations, function templates, and references</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1017">
<td><a href="https://cplusplus.github.io/CWG/issues/1017.html">1017</a></td>
+ <td>[<a href="https://wg21.link/class.mfct.non.static">class.mfct.non.static</a>]</td>
<td>C++11</td>
<td>Member access transformation in unevaluated operands</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1018">
<td><a href="https://cplusplus.github.io/CWG/issues/1018.html">1018</a></td>
+ <td>[<a href="https://wg21.link/dcl.pre">dcl.pre</a>]</td>
<td>C++11</td>
<td>Ambiguity between <I>simple-declaration</I> and <I>attribute-declaration</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1019">
<td><a href="https://cplusplus.github.io/CWG/issues/1019.html">1019</a></td>
+ <td>[<a href="https://wg21.link/class.derived">class.derived</a>]</td>
<td>dup</td>
<td>Dependent <I>simple-template-id</I>s in <I>base-specifier</I>s and <I>mem-initializer</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1020">
<td><a href="https://cplusplus.github.io/CWG/issues/1020.html">1020</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>C++11</td>
<td>Implicitly-defined copy constructors and explicit base class constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1021">
<td><a href="https://cplusplus.github.io/CWG/issues/1021.html">1021</a></td>
+ <td>[<a href="https://wg21.link/namespace.memdef">namespace.memdef</a>]</td>
<td>CD4</td>
<td>Definitions of namespace members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1022">
<td><a href="https://cplusplus.github.io/CWG/issues/1022.html">1022</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>C++11</td>
<td>Can an enumeration variable have values outside the values of the enumeration?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1023">
<td><a href="https://cplusplus.github.io/CWG/issues/1023.html">1023</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.nontype">temp.arg.nontype</a>]</td>
<td>dup</td>
<td><TT>thread_local</TT> objects as non-type template arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1024">
<td><a href="https://cplusplus.github.io/CWG/issues/1024.html">1024</a></td>
+ <td>[<a href="https://wg21.link/lex.ccon">lex.ccon</a>]</td>
<td>CD3</td>
<td>Limits on multicharacter literals</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1025">
<td><a href="https://cplusplus.github.io/CWG/issues/1025.html">1025</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.nontype">temp.arg.nontype</a>]</td>
<td>C++11</td>
<td>Use of a reference as a non-type template argument</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1026">
<td><a href="https://cplusplus.github.io/CWG/issues/1026.html">1026</a></td>
+ <td>[<a href="https://wg21.link/basic.lval">basic.lval</a>]</td>
<td>NAD</td>
<td>Cv-qualified non-class rvalues</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1027">
<td><a href="https://cplusplus.github.io/CWG/issues/1027.html">1027</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>review</td>
<td>Type consistency and reallocation of scalar types</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1028">
<td><a href="https://cplusplus.github.io/CWG/issues/1028.html">1028</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.res">temp.dep.res</a>]</td>
<td>CD6</td>
<td>Dependent names in non-defining declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1029">
<td><a href="https://cplusplus.github.io/CWG/issues/1029.html">1029</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>C++11</td>
<td>Type of a destructor call</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1030">
<td><a href="https://cplusplus.github.io/CWG/issues/1030.html">1030</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>C++11</td>
<td>Evaluation order in <I>initializer-list</I>s used in aggregate initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1031">
<td><a href="https://cplusplus.github.io/CWG/issues/1031.html">1031</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.grammar">dcl.attr.grammar</a>]</td>
<td>C++11</td>
<td>Optional elements in attributes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1032">
<td><a href="https://cplusplus.github.io/CWG/issues/1032.html">1032</a></td>
+ <td>[<a href="https://wg21.link/temp.variadic">temp.variadic</a>]</td>
<td>C++11</td>
<td>Empty pack expansions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1033">
<td><a href="https://cplusplus.github.io/CWG/issues/1033.html">1033</a></td>
+ <td>[<a href="https://wg21.link/dcl.align">dcl.align</a>]</td>
<td>C++11</td>
<td>Restrictions on alignment attributes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1034">
<td><a href="https://cplusplus.github.io/CWG/issues/1034.html">1034</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>C++11</td>
<td>Attributes for <TT>return</TT> statements in lambdas</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1035">
<td><a href="https://cplusplus.github.io/CWG/issues/1035.html">1035</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>C++11</td>
<td>Omitted and required <I>decl-specifier</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1036">
<td><a href="https://cplusplus.github.io/CWG/issues/1036.html">1036</a></td>
+ <td>[<a href="https://wg21.link/dcl.align">dcl.align</a>]</td>
<td>C++11</td>
<td>Alignment attribute in an <I>exception-declaration</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1037">
<td><a href="https://cplusplus.github.io/CWG/issues/1037.html">1037</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>C++11</td>
<td>Requirements for operands of <I>delete-expression</I>s and deallocation functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1038">
<td><a href="https://cplusplus.github.io/CWG/issues/1038.html">1038</a></td>
+ <td>[<a href="https://wg21.link/over.over">over.over</a>]</td>
<td>CD7</td>
<td>Overload resolution of <TT>&amp;x.static_func</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1039">
<td><a href="https://cplusplus.github.io/CWG/issues/1039.html">1039</a></td>
+ <td>[<a href="https://wg21.link/dcl.align">dcl.align</a>]</td>
<td>dup</td>
<td>Coordinating C and C++ alignment specifications</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1040">
<td><a href="https://cplusplus.github.io/CWG/issues/1040.html">1040</a></td>
+ <td>[<a href="https://wg21.link/intro.multithread">intro.multithread</a>]</td>
<td>NAD</td>
<td>Memory model issues</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1041">
<td><a href="https://cplusplus.github.io/CWG/issues/1041.html">1041</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>dup</td>
<td><I>alias-declaration</I>s as class members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1042">
<td><a href="https://cplusplus.github.io/CWG/issues/1042.html">1042</a></td>
+ <td>[<a href="https://wg21.link/dcl.pre">dcl.pre</a>]</td>
<td>C++11</td>
<td>Attributes in <I>alias-declaration</I>s</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="1043">
<td><a href="https://cplusplus.github.io/CWG/issues/1043.html">1043</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>C++11</td>
<td>Qualified name lookup in the current instantiation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1044">
<td><a href="https://cplusplus.github.io/CWG/issues/1044.html">1044</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.pdecl">basic.scope.pdecl</a>]</td>
<td>C++11</td>
<td>Point of declaration for an <I>alias-declaration</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1045">
<td><a href="https://cplusplus.github.io/CWG/issues/1045.html">1045</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>NAD</td>
<td>Requiring explicit instantiation declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1046">
<td><a href="https://cplusplus.github.io/CWG/issues/1046.html">1046</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>open</td>
<td>What is a &#8220;use&#8221; of a class specialization?</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1047">
<td><a href="https://cplusplus.github.io/CWG/issues/1047.html">1047</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.constexpr">temp.dep.constexpr</a>]</td>
<td>C++11</td>
<td>When is <TT>typeid</TT> value-dependent?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1048">
<td><a href="https://cplusplus.github.io/CWG/issues/1048.html">1048</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>CD3</td>
<td><TT>auto</TT> deduction and lambda return type deduction.</td>
<td class="full" align="center">Clang 3.6</td>
</tr>
<tr class="open" id="1049">
<td><a href="https://cplusplus.github.io/CWG/issues/1049.html">1049</a></td>
+ <td>[<a href="https://wg21.link/class.copy.elision">class.copy.elision</a>]</td>
<td>open</td>
<td>Copy elision through reference parameters of inline functions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1050">
<td><a href="https://cplusplus.github.io/CWG/issues/1050.html">1050</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>NAD</td>
<td>Effects of thread support on object lifetime</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1051">
<td><a href="https://cplusplus.github.io/CWG/issues/1051.html">1051</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>C++11</td>
<td>Reference members and generated copy constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1052">
<td><a href="https://cplusplus.github.io/CWG/issues/1052.html">1052</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>dup</td>
<td><TT>const</TT> non-static data member and PODness</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1053">
<td><a href="https://cplusplus.github.io/CWG/issues/1053.html">1053</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>NAD</td>
<td>Terminate vs undefined behavior for noexcept violation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1054">
<td><a href="https://cplusplus.github.io/CWG/issues/1054.html">1054</a></td>
+ <td>[<a href="https://wg21.link/stmt.expr">stmt.expr</a>]</td>
<td>C++11</td>
<td>Lvalue-to-rvalue conversions in expression statements</td>
<td class="none" align="center">No</td>
</tr>
<tr id="1055">
<td><a href="https://cplusplus.github.io/CWG/issues/1055.html">1055</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>C++11</td>
<td>Permissible uses of <TT>void</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1056">
<td><a href="https://cplusplus.github.io/CWG/issues/1056.html">1056</a></td>
+ <td>[<a href="https://wg21.link/temp.alias">temp.alias</a>]</td>
<td>C++11</td>
<td>Template aliases, member definitions, and the current instantiation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1057">
<td><a href="https://cplusplus.github.io/CWG/issues/1057.html">1057</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>C++11</td>
<td><TT>decltype</TT> and the current instantiation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1058">
<td><a href="https://cplusplus.github.io/CWG/issues/1058.html">1058</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>NAD</td>
<td>Reference binding of incompatible array types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1059">
<td><a href="https://cplusplus.github.io/CWG/issues/1059.html">1059</a></td>
+ <td>[<a href="https://wg21.link/basic.type.qualifier">basic.type.qualifier</a>]</td>
<td>CD3</td>
<td>Cv-qualified array types (with rvalues)</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1060">
<td><a href="https://cplusplus.github.io/CWG/issues/1060.html">1060</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++11</td>
<td>Scoped enumerators in integral constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1061">
<td><a href="https://cplusplus.github.io/CWG/issues/1061.html">1061</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>C++11</td>
<td>Negative array bounds in a <I>new-expression</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1062">
<td><a href="https://cplusplus.github.io/CWG/issues/1062.html">1062</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>C++11</td>
<td>Syntax of <I>attribute-specifier</I>s in lambdas</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1063">
<td><a href="https://cplusplus.github.io/CWG/issues/1063.html">1063</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.override">dcl.attr.override</a>]</td>
<td>C++11</td>
<td><TT>[[hiding]]</TT> with non-attribute declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1064">
<td><a href="https://cplusplus.github.io/CWG/issues/1064.html">1064</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>C++11</td>
<td>Defaulted move constructor for a union</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1065">
<td><a href="https://cplusplus.github.io/CWG/issues/1065.html">1065</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.override">dcl.attr.override</a>]</td>
<td>C++11</td>
<td><TT>[[hiding]]</TT> with <TT>[[override]]</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1066">
<td><a href="https://cplusplus.github.io/CWG/issues/1066.html">1066</a></td>
+ <td>[<a href="https://wg21.link/class.copy.assign">class.copy.assign</a>]</td>
<td>C++11</td>
<td>When is a copy/move assignment operator implicitly defined?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1067">
<td><a href="https://cplusplus.github.io/CWG/issues/1067.html">1067</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.override">dcl.attr.override</a>]</td>
<td>NAD</td>
<td><TT>[[hiding]]</TT>, <I>using-declaration</I>s, and multiple inheritance</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1068">
<td><a href="https://cplusplus.github.io/CWG/issues/1068.html">1068</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>C++11</td>
<td>Template aliases with default arguments and template parameter packs</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1069">
<td><a href="https://cplusplus.github.io/CWG/issues/1069.html">1069</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>C++11</td>
<td>Incorrect function type with <I>trailing-return-type</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1070">
<td><a href="https://cplusplus.github.io/CWG/issues/1070.html">1070</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>C++11</td>
<td>Missing initializer clauses in aggregate initialization</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="1071">
<td><a href="https://cplusplus.github.io/CWG/issues/1071.html">1071</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>C++11</td>
<td>Literal class types and trivial default constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1072">
<td><a href="https://cplusplus.github.io/CWG/issues/1072.html">1072</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>C++11</td>
<td>Scoped enumerator with the same name as its containing class</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1073">
<td><a href="https://cplusplus.github.io/CWG/issues/1073.html">1073</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>C++11</td>
<td>Merging <I>dynamic-exception-specification</I>s and <I>noexcept-specification</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1074">
<td><a href="https://cplusplus.github.io/CWG/issues/1074.html">1074</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.constexpr">temp.dep.constexpr</a>]</td>
<td>C++11</td>
<td>Value-dependent <I>noexcept-expression</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1075">
<td><a href="https://cplusplus.github.io/CWG/issues/1075.html">1075</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.simple">dcl.type.simple</a>]</td>
<td>C++11</td>
<td>Grammar does not allow template alias in <I>type-name</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1076">
<td><a href="https://cplusplus.github.io/CWG/issues/1076.html">1076</a></td>
+ <td>[<a href="https://wg21.link/basic.lval">basic.lval</a>]</td>
<td>CD5</td>
<td>Value categories and lvalue temporaries</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1077">
<td><a href="https://cplusplus.github.io/CWG/issues/1077.html">1077</a></td>
+ <td>[<a href="https://wg21.link/namespace.memdef">namespace.memdef</a>]</td>
<td>NAD</td>
<td>Explicit specializations in non-containing namespaces</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1078">
<td><a href="https://cplusplus.github.io/CWG/issues/1078.html">1078</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>NAD</td>
<td>Narrowing and the usual arithmetic conversions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1079">
<td><a href="https://cplusplus.github.io/CWG/issues/1079.html">1079</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>C++11</td>
<td>Overload resolution involving aggregate initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1080">
<td><a href="https://cplusplus.github.io/CWG/issues/1080.html">1080</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>C++11</td>
<td>Confusing relationship between templates and copy constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1081">
<td><a href="https://cplusplus.github.io/CWG/issues/1081.html">1081</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>C++11</td>
<td>Defaulted destructor and unusable operator delete</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1082">
<td><a href="https://cplusplus.github.io/CWG/issues/1082.html">1082</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>C++11</td>
<td>Implicit copy function if subobject has none?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1083">
<td><a href="https://cplusplus.github.io/CWG/issues/1083.html">1083</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>C++11</td>
<td>Passing an object to ellipsis with non-trivial move constructor</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1084">
<td><a href="https://cplusplus.github.io/CWG/issues/1084.html">1084</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>NAD</td>
<td>Conditions for a deleted move function</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1085">
<td><a href="https://cplusplus.github.io/CWG/issues/1085.html">1085</a></td>
+ <td>[<a href="https://wg21.link/class.copy.assign">class.copy.assign</a>]</td>
<td>NAD</td>
<td>Move assignment operators and virtual bases</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1086">
<td><a href="https://cplusplus.github.io/CWG/issues/1086.html">1086</a></td>
+ <td>[<a href="https://wg21.link/expr.const.cast">expr.const.cast</a>]</td>
<td>C++11</td>
<td><TT>const_cast</TT> to rvalue reference to function type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1087">
<td><a href="https://cplusplus.github.io/CWG/issues/1087.html">1087</a></td>
+ <td>[<a href="https://wg21.link/over.match.copy">over.match.copy</a>]</td>
<td>C++11</td>
<td>Additional applications of issue 899</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1088">
<td><a href="https://cplusplus.github.io/CWG/issues/1088.html">1088</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.constexpr">temp.dep.constexpr</a>]</td>
<td>C++11</td>
<td>Dependent non-type template arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1089">
<td><a href="https://cplusplus.github.io/CWG/issues/1089.html">1089</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.qual.general">basic.lookup.qual.general</a>]</td>
<td>open</td>
<td>Template parameters in member selections</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1090">
<td><a href="https://cplusplus.github.io/CWG/issues/1090.html">1090</a></td>
+ <td>[<a href="https://wg21.link/basic.align">basic.align</a>]</td>
<td>C++11</td>
<td>Alignment of subobjects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1091">
<td><a href="https://cplusplus.github.io/CWG/issues/1091.html">1091</a></td>
+ <td>[<a href="https://wg21.link/expr.mptr.oper">expr.mptr.oper</a>]</td>
<td>C++11</td>
<td>Inconsistent use of the term &#8220;object expression&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1092">
<td><a href="https://cplusplus.github.io/CWG/issues/1092.html">1092</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>drafting</td>
<td>Cycles in overload resolution during instantiation</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1093">
<td><a href="https://cplusplus.github.io/CWG/issues/1093.html">1093</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD3</td>
<td>Value-initializing non-objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1094">
<td><a href="https://cplusplus.github.io/CWG/issues/1094.html">1094</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>C++11</td>
<td>Converting floating-point values to scoped enumeration types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1095">
<td><a href="https://cplusplus.github.io/CWG/issues/1095.html">1095</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>C++11</td>
<td>List-initialization of references</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1096">
<td><a href="https://cplusplus.github.io/CWG/issues/1096.html">1096</a></td>
+ <td>[<a href="https://wg21.link/temp">temp</a>]</td>
<td>C++11</td>
<td>Missing requirement for template definitions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1097">
<td><a href="https://cplusplus.github.io/CWG/issues/1097.html">1097</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>NAD</td>
<td>Aggregate initialization of function parameters</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1098">
<td><a href="https://cplusplus.github.io/CWG/issues/1098.html">1098</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++11</td>
<td>Pointer conversions in constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1099">
<td><a href="https://cplusplus.github.io/CWG/issues/1099.html">1099</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++11</td>
<td>Infinite recursion in <TT>constexpr</TT> functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1100">
<td><a href="https://cplusplus.github.io/CWG/issues/1100.html">1100</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++11</td>
<td><TT>constexpr</TT> conversion functions and non-type template arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1101">
<td><a href="https://cplusplus.github.io/CWG/issues/1101.html">1101</a></td>
+ <td>[<a href="https://wg21.link/class.static.data">class.static.data</a>]</td>
<td>C++11</td>
<td>Non-integral initialized static data members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1102">
<td><a href="https://cplusplus.github.io/CWG/issues/1102.html">1102</a></td>
+ <td>[<a href="https://wg21.link/intro.execution">intro.execution</a>]</td>
<td>C++11</td>
<td>Better example of undefined behavior</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1103">
<td><a href="https://cplusplus.github.io/CWG/issues/1103.html">1103</a></td>
+ <td>[<a href="https://wg21.link/lex.phases">lex.phases</a>]</td>
<td>C++11</td>
<td>Reversion of phase 1 and 2 transformations in raw string literals</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1104">
<td><a href="https://cplusplus.github.io/CWG/issues/1104.html">1104</a></td>
+ <td>[<a href="https://wg21.link/lex.digraph">lex.digraph</a>]</td>
<td>C++11</td>
<td>Global-scope template arguments vs the <TT>&lt;:</TT> digraph</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1105">
<td><a href="https://cplusplus.github.io/CWG/issues/1105.html">1105</a></td>
+ <td>[<a href="https://wg21.link/lex.name">lex.name</a>]</td>
<td>C++11</td>
<td>Issues relating to TR 10176:2003</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1106">
<td><a href="https://cplusplus.github.io/CWG/issues/1106.html">1106</a></td>
+ <td>[<a href="https://wg21.link/lex.nullptr">lex.nullptr</a>]</td>
<td>C++11</td>
<td>Need more detail in <TT>nullptr</TT> keyword description</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1107">
<td><a href="https://cplusplus.github.io/CWG/issues/1107.html">1107</a></td>
+ <td>[<a href="https://wg21.link/lex.ext">lex.ext</a>]</td>
<td>C++11</td>
<td>Overload resolution for user-defined integer literals</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1108">
<td><a href="https://cplusplus.github.io/CWG/issues/1108.html">1108</a></td>
+ <td>[<a href="https://wg21.link/lex.ext">lex.ext</a>]</td>
<td>NAD</td>
<td>User-defined literals have not been implemented</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1109">
<td><a href="https://cplusplus.github.io/CWG/issues/1109.html">1109</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>C++11</td>
<td>When is &#8220;use&#8221; a reference to the ODR meaning?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1110">
<td><a href="https://cplusplus.github.io/CWG/issues/1110.html">1110</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>NAD</td>
<td>Incomplete return type should be allowed in <TT>decltype</TT> operand</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="1111">
<td><a href="https://cplusplus.github.io/CWG/issues/1111.html">1111</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.classref">basic.lookup.classref</a>]</td>
<td>C++11</td>
<td>Remove dual-scope lookup of member template names</td>
<td class="partial" align="center">Partial</td>
</tr>
<tr id="1112">
<td><a href="https://cplusplus.github.io/CWG/issues/1112.html">1112</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>C++11</td>
<td><TT>constexpr</TT> variables should have internal linkage like <TT>const</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1113">
<td><a href="https://cplusplus.github.io/CWG/issues/1113.html">1113</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>C++11</td>
<td>Linkage of namespace member of unnamed namespace</td>
<td class="partial" align="center">Partial</td>
</tr>
<tr id="1114">
<td><a href="https://cplusplus.github.io/CWG/issues/1114.html">1114</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>C++11</td>
<td>Incorrect use of placement <TT>new</TT> in example</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1115">
<td><a href="https://cplusplus.github.io/CWG/issues/1115.html">1115</a></td>
+ <td>[<a href="https://wg21.link/basic.align">basic.align</a>]</td>
<td>C++11</td>
<td>C-compatible alignment specification</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1116">
<td><a href="https://cplusplus.github.io/CWG/issues/1116.html">1116</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>CD4</td>
<td>Aliasing of union members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1117">
<td><a href="https://cplusplus.github.io/CWG/issues/1117.html">1117</a></td>
+ <td>[<a href="https://wg21.link/expr">expr</a>]</td>
<td>C++11</td>
<td>Incorrect note about xvalue member access expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1118">
<td><a href="https://cplusplus.github.io/CWG/issues/1118.html">1118</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>NAD</td>
<td>Implicit lambda capture via explicit copy constructor</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1119">
<td><a href="https://cplusplus.github.io/CWG/issues/1119.html">1119</a></td>
+ <td>[<a href="https://wg21.link/expr.ref">expr.ref</a>]</td>
<td>C++11</td>
<td>Missing case in description of member access ambiguity</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1120">
<td><a href="https://cplusplus.github.io/CWG/issues/1120.html">1120</a></td>
+ <td>[<a href="https://wg21.link/expr.reinterpret.cast">expr.reinterpret.cast</a>]</td>
<td>C++11</td>
<td><TT>reinterpret_cast</TT> and <TT>void*</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1121">
<td><a href="https://cplusplus.github.io/CWG/issues/1121.html">1121</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.op">expr.unary.op</a>]</td>
<td>C++11</td>
<td>Unnecessary ambiguity error in formation of pointer to member</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1122">
<td><a href="https://cplusplus.github.io/CWG/issues/1122.html">1122</a></td>
+ <td>[<a href="https://wg21.link/expr.sizeof">expr.sizeof</a>]</td>
<td>C++11</td>
<td>Circular definition of <TT>std::size_t</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1123">
<td><a href="https://cplusplus.github.io/CWG/issues/1123.html">1123</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.noexcept">expr.unary.noexcept</a>]</td>
<td>C++11</td>
<td>Destructors should be <TT>noexcept</TT> by default</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1124">
<td><a href="https://cplusplus.github.io/CWG/issues/1124.html">1124</a></td>
+ <td>[<a href="https://wg21.link/expr.mptr.oper">expr.mptr.oper</a>]</td>
<td>NAD</td>
<td>Error in description of value category of pointer-to-member expression</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1125">
<td><a href="https://cplusplus.github.io/CWG/issues/1125.html">1125</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++11</td>
<td>Unclear definition of &#8220;potential constant expression&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1126">
<td><a href="https://cplusplus.github.io/CWG/issues/1126.html">1126</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++11</td>
<td><TT>constexpr</TT> functions in <TT>const</TT> initializers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1127">
<td><a href="https://cplusplus.github.io/CWG/issues/1127.html">1127</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++11</td>
<td>Overload resolution in <TT>constexpr</TT> functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1128">
<td><a href="https://cplusplus.github.io/CWG/issues/1128.html">1128</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec">dcl.spec</a>]</td>
<td>C++11</td>
<td><I>attribute-specifier</I>s in <I>decl-specifier-seq</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1129">
<td><a href="https://cplusplus.github.io/CWG/issues/1129.html">1129</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>C++11</td>
<td>Default <TT>nothrow</TT> for <TT>constexpr</TT> functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1130">
<td><a href="https://cplusplus.github.io/CWG/issues/1130.html">1130</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.simple">dcl.type.simple</a>]</td>
<td>C++11</td>
<td>Function parameter type adjustments and <TT>decltype</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1131">
<td><a href="https://cplusplus.github.io/CWG/issues/1131.html">1131</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.elab">dcl.type.elab</a>]</td>
<td>C++11</td>
<td>Template aliases in <I>elaborated-type-specifier</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1132">
<td><a href="https://cplusplus.github.io/CWG/issues/1132.html">1132</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.noreturn">dcl.attr.noreturn</a>]</td>
<td>NAD</td>
<td>Keyword vs attribute for <TT>noreturn</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1133">
<td><a href="https://cplusplus.github.io/CWG/issues/1133.html">1133</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.override">dcl.attr.override</a>]</td>
<td>C++11</td>
<td>Keywords vs attributes for control of hiding and overriding</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1134">
<td><a href="https://cplusplus.github.io/CWG/issues/1134.html">1134</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>C++11</td>
<td>When is an explicitly-defaulted function defined?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1135">
<td><a href="https://cplusplus.github.io/CWG/issues/1135.html">1135</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>C++11</td>
<td>Explicitly-defaulted non-public special member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1136">
<td><a href="https://cplusplus.github.io/CWG/issues/1136.html">1136</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>C++11</td>
<td>Explicitly-defaulted explicit constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1137">
<td><a href="https://cplusplus.github.io/CWG/issues/1137.html">1137</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>C++11</td>
<td>Explicitly-defaulted virtual special member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1138">
<td><a href="https://cplusplus.github.io/CWG/issues/1138.html">1138</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>C++11</td>
<td>Rvalue-ness check for rvalue reference binding is wrong</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1139">
<td><a href="https://cplusplus.github.io/CWG/issues/1139.html">1139</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>C++11</td>
<td>Rvalue reference binding to scalar xvalues</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1140">
<td><a href="https://cplusplus.github.io/CWG/issues/1140.html">1140</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>C++11</td>
<td>Incorrect redefinition of POD class</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1141">
<td><a href="https://cplusplus.github.io/CWG/issues/1141.html">1141</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>NAD</td>
<td>Non-static data member initializers have not been implemented</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1142">
<td><a href="https://cplusplus.github.io/CWG/issues/1142.html">1142</a></td>
+ <td>[<a href="https://wg21.link/class.mfct">class.mfct</a>]</td>
<td>C++11</td>
<td><TT>friend</TT> declaration of member function of containing class</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1143">
<td><a href="https://cplusplus.github.io/CWG/issues/1143.html">1143</a></td>
+ <td>[<a href="https://wg21.link/class.mfct.non.static">class.mfct.non.static</a>]</td>
<td>NAD</td>
<td>Move semantics for <TT>*this</TT> have not been implemented</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1144">
<td><a href="https://cplusplus.github.io/CWG/issues/1144.html">1144</a></td>
+ <td>[<a href="https://wg21.link/class.access.dcl">class.access.dcl</a>]</td>
<td>C++11</td>
<td>Remove access declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1145">
<td><a href="https://cplusplus.github.io/CWG/issues/1145.html">1145</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>C++11</td>
<td>Defaulting and triviality</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1146">
<td><a href="https://cplusplus.github.io/CWG/issues/1146.html">1146</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>C++11</td>
<td><I>exception-specification</I>s of defaulted functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1147">
<td><a href="https://cplusplus.github.io/CWG/issues/1147.html">1147</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>C++11</td>
<td>Destructors should be default <TT>nothrow</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1148">
<td><a href="https://cplusplus.github.io/CWG/issues/1148.html">1148</a></td>
+ <td>[<a href="https://wg21.link/class.copy.elision">class.copy.elision</a>]</td>
<td>C++11</td>
<td>Copy elision and move construction of function parameters</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1149">
<td><a href="https://cplusplus.github.io/CWG/issues/1149.html">1149</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>C++11</td>
<td>Trivial non-public copy operators in subobjects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1150">
<td><a href="https://cplusplus.github.io/CWG/issues/1150.html">1150</a></td>
+ <td>[<a href="https://wg21.link/class.inhctor">class.inhctor</a>]</td>
<td>NAD</td>
<td>Inheriting constructors have not been implemented</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="1151">
<td><a href="https://cplusplus.github.io/CWG/issues/1151.html">1151</a></td>
+ <td>[<a href="https://wg21.link/over.match.list">over.match.list</a>]</td>
<td>C++11</td>
<td>Overload resolution with initializer-list and non-list constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1152">
<td><a href="https://cplusplus.github.io/CWG/issues/1152.html">1152</a></td>
+ <td>[<a href="https://wg21.link/over.match.viable">over.match.viable</a>]</td>
<td>C++11</td>
<td>Rules for determining existence of implicit conversion sequence</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1153">
<td><a href="https://cplusplus.github.io/CWG/issues/1153.html">1153</a></td>
+ <td>[<a href="https://wg21.link/over.over">over.over</a>]</td>
<td>C++11</td>
<td>Type matching in address of overloaded function</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1154">
<td><a href="https://cplusplus.github.io/CWG/issues/1154.html">1154</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.nontype">temp.arg.nontype</a>]</td>
<td>C++11</td>
<td>Address of <TT>thread_local</TT> variable as non-type template argument</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1155">
<td><a href="https://cplusplus.github.io/CWG/issues/1155.html">1155</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.nontype">temp.arg.nontype</a>]</td>
<td>C++11</td>
<td>Internal-linkage non-type template arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1156">
<td><a href="https://cplusplus.github.io/CWG/issues/1156.html">1156</a></td>
+ <td>[<a href="https://wg21.link/temp.func.order">temp.func.order</a>]</td>
<td>C++11</td>
<td>Partial ordering in a non-call context</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1157">
<td><a href="https://cplusplus.github.io/CWG/issues/1157.html">1157</a></td>
+ <td>[<a href="https://wg21.link/temp.func.order">temp.func.order</a>]</td>
<td>open</td>
<td>Partial ordering of function templates is still underspecified</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1158">
<td><a href="https://cplusplus.github.io/CWG/issues/1158.html">1158</a></td>
+ <td>[<a href="https://wg21.link/temp.alias">temp.alias</a>]</td>
<td>C++11</td>
<td>Recursive instantiation via alias template</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1159">
<td><a href="https://cplusplus.github.io/CWG/issues/1159.html">1159</a></td>
+ <td>[<a href="https://wg21.link/temp.alias">temp.alias</a>]</td>
<td>C++11</td>
<td>Class and enumeration definitions in template aliases</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1160">
<td><a href="https://cplusplus.github.io/CWG/issues/1160.html">1160</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>C++11</td>
<td>Definitions of template members and the current instantiation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1161">
<td><a href="https://cplusplus.github.io/CWG/issues/1161.html">1161</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>C++11</td>
<td>Dependent <I>nested-name-specifier</I> in a pointer-to-member declarator</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1162">
<td><a href="https://cplusplus.github.io/CWG/issues/1162.html">1162</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>NAD</td>
<td>Dependent <I>elaborated-type-specifier</I>s in non-deduced contexts</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1163">
<td><a href="https://cplusplus.github.io/CWG/issues/1163.html">1163</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>NAD</td>
<td><TT>extern template</TT> prevents inlining functions not marked <TT>inline</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1164">
<td><a href="https://cplusplus.github.io/CWG/issues/1164.html">1164</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>C++11</td>
<td>Partial ordering of <TT>f(T&amp;)</TT> and <TT>f(T&amp;&amp;)</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1165">
<td><a href="https://cplusplus.github.io/CWG/issues/1165.html">1165</a></td>
+ <td>[<a href="https://wg21.link/except.ctor">except.ctor</a>]</td>
<td>C++11</td>
<td>Exceptions when destroying array elements</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1166">
<td><a href="https://cplusplus.github.io/CWG/issues/1166.html">1166</a></td>
+ <td>[<a href="https://wg21.link/except.handle">except.handle</a>]</td>
<td>C++11</td>
<td><I>exception-declaration</I>s that do not declare objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1167">
<td><a href="https://cplusplus.github.io/CWG/issues/1167.html">1167</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>C++11</td>
<td><I>function-try-block</I>s for destructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1168">
<td><a href="https://cplusplus.github.io/CWG/issues/1168.html">1168</a></td>
+ <td>[<a href="https://wg21.link/except.terminate">except.terminate</a>]</td>
<td>C++11</td>
<td>Additional reasons to call <TT>std::terminate</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1169">
<td><a href="https://cplusplus.github.io/CWG/issues/1169.html">1169</a></td>
+ <td>[<a href="https://wg21.link/cpp.predefined">cpp.predefined</a>]</td>
<td>C++11</td>
<td>Missing feature macro for strict pointer safety</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1170">
<td><a href="https://cplusplus.github.io/CWG/issues/1170.html">1170</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>C++11</td>
<td>Access checking during template argument deduction</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1171">
<td><a href="https://cplusplus.github.io/CWG/issues/1171.html">1171</a></td>
+ <td>[<a href="https://wg21.link/except.terminate">except.terminate</a>]</td>
<td>C++11</td>
<td>Partial stack unwinding with <TT>noexcept</TT> violation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1172">
<td><a href="https://cplusplus.github.io/CWG/issues/1172.html">1172</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>drafting</td>
<td>&#8220;instantiation-dependent&#8221; constructs</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1173">
<td><a href="https://cplusplus.github.io/CWG/issues/1173.html">1173</a></td>
+ <td>[<a href="https://wg21.link/intro.execution">intro.execution</a>]</td>
<td>C++11</td>
<td>Unclear specification of effects of signal handling</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1174">
<td><a href="https://cplusplus.github.io/CWG/issues/1174.html">1174</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>C++11</td>
<td>When is a pure virtual function &#8220;used?&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1175">
<td><a href="https://cplusplus.github.io/CWG/issues/1175.html">1175</a></td>
+ <td>[<a href="https://wg21.link/lex.ext">lex.ext</a>]</td>
<td>C++11</td>
<td>Disambiguating user-defined literals</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1176">
<td><a href="https://cplusplus.github.io/CWG/issues/1176.html">1176</a></td>
+ <td>[<a href="https://wg21.link/intro.multithread">intro.multithread</a>]</td>
<td>C++11</td>
<td>Definition of release sequence</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1177">
<td><a href="https://cplusplus.github.io/CWG/issues/1177.html">1177</a></td>
+ <td>[<a href="https://wg21.link/intro.multithread">intro.multithread</a>]</td>
<td>C++11</td>
<td>Intra-thread dependency-ordered-before</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1178">
<td><a href="https://cplusplus.github.io/CWG/issues/1178.html">1178</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.decl">temp.deduct.decl</a>]</td>
<td>C++11</td>
<td>Deduction failure matching placement new</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1179">
<td><a href="https://cplusplus.github.io/CWG/issues/1179.html">1179</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>NAD</td>
<td>Cv-qualification of non-type template parameters</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1180">
<td><a href="https://cplusplus.github.io/CWG/issues/1180.html">1180</a></td>
+ <td>[<a href="https://wg21.link/basic.align">basic.align</a>]</td>
<td>C++11</td>
<td>Over-aligned class types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1181">
<td><a href="https://cplusplus.github.io/CWG/issues/1181.html">1181</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>C++11</td>
<td>What is a &#8220;built-in type?&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1182">
<td><a href="https://cplusplus.github.io/CWG/issues/1182.html">1182</a></td>
+ <td>[<a href="https://wg21.link/temp.variadic">temp.variadic</a>]</td>
<td>C++11</td>
<td>Incorrect description of pack expansion syntax</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1183">
<td><a href="https://cplusplus.github.io/CWG/issues/1183.html">1183</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>C++11</td>
<td>Expansion of parameter packs in declarators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1184">
<td><a href="https://cplusplus.github.io/CWG/issues/1184.html">1184</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>C++11</td>
<td>Argument conversions to nondeduced parameter types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1185">
<td><a href="https://cplusplus.github.io/CWG/issues/1185.html">1185</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>C++11</td>
<td>Misleading description of language linkage and member function types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1186">
<td><a href="https://cplusplus.github.io/CWG/issues/1186.html">1186</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>C++11</td>
<td>Non-dependent <TT>constexpr</TT> violations in function templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1187">
<td><a href="https://cplusplus.github.io/CWG/issues/1187.html">1187</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>C++11</td>
<td>Problems in initialization example</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1188">
<td><a href="https://cplusplus.github.io/CWG/issues/1188.html">1188</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++11</td>
<td>Type punning in constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1189">
<td><a href="https://cplusplus.github.io/CWG/issues/1189.html">1189</a></td>
+ <td>[<a href="https://wg21.link/intro.object">intro.object</a>]</td>
<td>C++11</td>
<td>Address of distinct base class subobjects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1190">
<td><a href="https://cplusplus.github.io/CWG/issues/1190.html">1190</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.safety">basic.stc.dynamic.safety</a>]</td>
<td>C++11</td>
<td>Operations on non-safely-derived pointers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1191">
<td><a href="https://cplusplus.github.io/CWG/issues/1191.html">1191</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>C++11</td>
<td>Deleted subobject destructors and implicitly-defined constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1192">
<td><a href="https://cplusplus.github.io/CWG/issues/1192.html">1192</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>C++11</td>
<td>Inadvertent change to ODR and templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1193">
<td><a href="https://cplusplus.github.io/CWG/issues/1193.html">1193</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++11</td>
<td>Use of address-constant pointers in constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1194">
<td><a href="https://cplusplus.github.io/CWG/issues/1194.html">1194</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>C++11</td>
<td>Constexpr references</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1195">
<td><a href="https://cplusplus.github.io/CWG/issues/1195.html">1195</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>C++11</td>
<td>References to non-literal types in constexpr functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1196">
<td><a href="https://cplusplus.github.io/CWG/issues/1196.html">1196</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>C++11</td>
<td>Definition required for explicit instantiation after explicit specialization?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1197">
<td><a href="https://cplusplus.github.io/CWG/issues/1197.html">1197</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++11</td>
<td>Constexpr arrays</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1198">
<td><a href="https://cplusplus.github.io/CWG/issues/1198.html">1198</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>C++11</td>
<td>Literal types and copy constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1199">
<td><a href="https://cplusplus.github.io/CWG/issues/1199.html">1199</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>C++11</td>
<td>Deleted constexpr functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1200">
<td><a href="https://cplusplus.github.io/CWG/issues/1200.html">1200</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.unqual">basic.lookup.unqual</a>]</td>
<td>CD6</td>
<td>Lookup rules for template parameters</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="1201">
<td><a href="https://cplusplus.github.io/CWG/issues/1201.html">1201</a></td>
+ <td>[<a href="https://wg21.link/basic.def">basic.def</a>]</td>
<td>C++11</td>
<td>Are deleted and defaulted functions definitions?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1202">
<td><a href="https://cplusplus.github.io/CWG/issues/1202.html">1202</a></td>
+ <td>[<a href="https://wg21.link/class.cdtor">class.cdtor</a>]</td>
<td>C++11</td>
<td>Calling virtual functions during destruction</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1203">
<td><a href="https://cplusplus.github.io/CWG/issues/1203.html">1203</a></td>
+ <td>[<a href="https://wg21.link/class.static.data">class.static.data</a>]</td>
<td>dup</td>
<td>Misleading note regarding initialized static data members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1204">
<td><a href="https://cplusplus.github.io/CWG/issues/1204.html">1204</a></td>
+ <td>[<a href="https://wg21.link/stmt.iter">stmt.iter</a>]</td>
<td>C++11</td>
<td>Specifiers in a <I>for-range-declaration</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1205">
<td><a href="https://cplusplus.github.io/CWG/issues/1205.html">1205</a></td>
+ <td>[<a href="https://wg21.link/over.ics.ref">over.ics.ref</a>]</td>
<td>dup</td>
<td>Lvalue reference binding and function viability</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1206">
<td><a href="https://cplusplus.github.io/CWG/issues/1206.html">1206</a></td>
+ <td>[<a href="https://wg21.link/temp.class">temp.class</a>]</td>
<td>C++11</td>
<td>Defining opaque enumeration members of class templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1207">
<td><a href="https://cplusplus.github.io/CWG/issues/1207.html">1207</a></td>
+ <td>[<a href="https://wg21.link/class.mfct.non.static">class.mfct.non.static</a>]</td>
<td>C++11</td>
<td>Type of class member in <I>trailing-return-type</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1208">
<td><a href="https://cplusplus.github.io/CWG/issues/1208.html">1208</a></td>
+ <td>[<a href="https://wg21.link/class.mfct.non.static">class.mfct.non.static</a>]</td>
<td>C++11</td>
<td>Explicit <TT>noexcept</TT> in defaulted definition</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1209">
<td><a href="https://cplusplus.github.io/CWG/issues/1209.html">1209</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>open</td>
<td>Is a potentially-evaluated expression in a template definition a &#8220;use?&#8221;</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1210">
<td><a href="https://cplusplus.github.io/CWG/issues/1210.html">1210</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.pdecl">basic.scope.pdecl</a>]</td>
<td>C++11</td>
<td>Injection of <I>elaborated-type-specifier</I> in enumeration scope</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1211">
<td><a href="https://cplusplus.github.io/CWG/issues/1211.html">1211</a></td>
+ <td>[<a href="https://wg21.link/basic.align">basic.align</a>]</td>
<td>open</td>
<td>Misaligned lvalues</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1212">
<td><a href="https://cplusplus.github.io/CWG/issues/1212.html">1212</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.simple">dcl.type.simple</a>]</td>
<td>C++11</td>
<td>Non-function-call xvalues and <TT>decltype</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1213">
<td><a href="https://cplusplus.github.io/CWG/issues/1213.html">1213</a></td>
+ <td>[<a href="https://wg21.link/expr.sub">expr.sub</a>]</td>
<td>CD3</td>
<td>Array subscripting and xvalues</td>
<td class="full" align="center">Clang 7</td>
</tr>
<tr id="1214">
<td><a href="https://cplusplus.github.io/CWG/issues/1214.html">1214</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>C++11</td>
<td>Kinds of initializers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1215">
<td><a href="https://cplusplus.github.io/CWG/issues/1215.html">1215</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>C++11</td>
<td>Definition of POD struct</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1216">
<td><a href="https://cplusplus.github.io/CWG/issues/1216.html">1216</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>C++11</td>
<td>Exceptions &#8220;allowed&#8221; by a <I>noexcept-specification</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1217">
<td><a href="https://cplusplus.github.io/CWG/issues/1217.html">1217</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.delete">dcl.fct.def.delete</a>]</td>
<td>NAD</td>
<td>Are deleted functions implicitly <TT>noexcept</TT>?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1218">
<td><a href="https://cplusplus.github.io/CWG/issues/1218.html">1218</a></td>
+ <td>[<a href="https://wg21.link/except.handle">except.handle</a>]</td>
<td>C++11</td>
<td>What is the &#8220;currently-handled exception&#8221; in a multi-threaded program?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1219">
<td><a href="https://cplusplus.github.io/CWG/issues/1219.html">1219</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>C++11</td>
<td>Non-static data member initializers in constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1220">
<td><a href="https://cplusplus.github.io/CWG/issues/1220.html">1220</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.classref">basic.lookup.classref</a>]</td>
<td>C++11</td>
<td>Looking up <I>conversion-type-id</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1221">
<td><a href="https://cplusplus.github.io/CWG/issues/1221.html">1221</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.partial">temp.deduct.partial</a>]</td>
<td>open</td>
<td>Partial ordering and reference collapsing</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1222">
<td><a href="https://cplusplus.github.io/CWG/issues/1222.html">1222</a></td>
+ <td>[<a href="https://wg21.link/dcl.array">dcl.array</a>]</td>
<td>NAD</td>
<td>Unnecessary restriction on <TT>auto</TT> array types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1223">
<td><a href="https://cplusplus.github.io/CWG/issues/1223.html">1223</a></td>
+ <td>[<a href="https://wg21.link/stmt.ambig">stmt.ambig</a>]</td>
<td>CD7</td>
<td>Syntactic disambiguation and <I>trailing-return-type</I>s</td>
<td class="full" align="center">Clang 17</td>
</tr>
<tr id="1224">
<td><a href="https://cplusplus.github.io/CWG/issues/1224.html">1224</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>C++11</td>
<td><TT>constexpr</TT> defaulted copy constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1225">
<td><a href="https://cplusplus.github.io/CWG/issues/1225.html">1225</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>C++11</td>
<td><TT>constexpr</TT> constructors and virtual bases</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1226">
<td><a href="https://cplusplus.github.io/CWG/issues/1226.html">1226</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>CD3</td>
<td>Converting a <I>braced-init-list</I> default argument</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1227">
<td><a href="https://cplusplus.github.io/CWG/issues/1227.html">1227</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>CD3</td>
<td>Mixing immediate and non-immediate contexts in deduction failure</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="1228">
<td><a href="https://cplusplus.github.io/CWG/issues/1228.html">1228</a></td>
+ <td>[<a href="https://wg21.link/over.match.list">over.match.list</a>]</td>
<td>NAD</td>
<td>Copy-list-initialization and <TT>explicit</TT> constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1229">
<td><a href="https://cplusplus.github.io/CWG/issues/1229.html">1229</a></td>
+ <td>[<a href="https://wg21.link/over.match.list">over.match.list</a>]</td>
<td>C++11</td>
<td>Overload resolution with empty <I>braced-init-list</I> argument</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1230">
<td><a href="https://cplusplus.github.io/CWG/issues/1230.html">1230</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.op">expr.unary.op</a>]</td>
<td>dup</td>
<td>Confusing description of ambiguity of destructor name</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1231">
<td><a href="https://cplusplus.github.io/CWG/issues/1231.html">1231</a></td>
+ <td>[<a href="https://wg21.link/temp.variadic">temp.variadic</a>]</td>
<td>C++11</td>
<td>Variadic templates requiring an empty pack expansion</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1232">
<td><a href="https://cplusplus.github.io/CWG/issues/1232.html">1232</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>C++11</td>
<td>Creation of array temporaries using a <I>braced-init-list</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1233">
<td><a href="https://cplusplus.github.io/CWG/issues/1233.html">1233</a></td>
+ <td>[<a href="https://wg21.link/temp.dep">temp.dep</a>]</td>
<td>C++11</td>
<td>Pack expansions and dependent calls</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1234">
<td><a href="https://cplusplus.github.io/CWG/issues/1234.html">1234</a></td>
+ <td>[<a href="https://wg21.link/dcl.name">dcl.name</a>]</td>
<td>C++11</td>
<td><I>abstract-declarator</I> does not permit <TT>...</TT> after <I>ptr-operator</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1235">
<td><a href="https://cplusplus.github.io/CWG/issues/1235.html">1235</a></td>
+ <td>[<a href="https://wg21.link/temp.func.order">temp.func.order</a>]</td>
<td>C++11</td>
<td>&#8220;Unused&#8221; ellipsis and default arguments in partial ordering</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1236">
<td><a href="https://cplusplus.github.io/CWG/issues/1236.html">1236</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>C++11</td>
<td>Inconsistently-interrelated examples</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1237">
<td><a href="https://cplusplus.github.io/CWG/issues/1237.html">1237</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>C++11</td>
<td>Deprecated implicit copy assignment in example</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1238">
<td><a href="https://cplusplus.github.io/CWG/issues/1238.html">1238</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>C++11</td>
<td>Overloading ambiguity binding reference to function</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1239">
<td><a href="https://cplusplus.github.io/CWG/issues/1239.html">1239</a></td>
+ <td>[<a href="https://wg21.link/lex.ext">lex.ext</a>]</td>
<td>C++11</td>
<td>Hexadecimal floating-point literals vs user-defined literals</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1240">
<td><a href="https://cplusplus.github.io/CWG/issues/1240.html">1240</a></td>
+ <td>[<a href="https://wg21.link/dcl.name">dcl.name</a>]</td>
<td>C++11</td>
<td><TT>constexpr</TT> defaulted constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1241">
<td><a href="https://cplusplus.github.io/CWG/issues/1241.html">1241</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>C++11</td>
<td>Which members does a destructor destroy?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1242">
<td><a href="https://cplusplus.github.io/CWG/issues/1242.html">1242</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>C++11</td>
<td>Initializing variant class members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1243">
<td><a href="https://cplusplus.github.io/CWG/issues/1243.html">1243</a></td>
+ <td>[<a href="https://wg21.link/dcl.decl">dcl.decl</a>]</td>
<td>C++11</td>
<td>Misleading footnote regarding multiple-declarator declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1244">
<td><a href="https://cplusplus.github.io/CWG/issues/1244.html">1244</a></td>
+ <td>[<a href="https://wg21.link/temp.type">temp.type</a>]</td>
<td>C++11</td>
<td>Equivalence of alias templates and class templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1245">
<td><a href="https://cplusplus.github.io/CWG/issues/1245.html">1245</a></td>
+ <td>[<a href="https://wg21.link/temp.mem.func">temp.mem.func</a>]</td>
<td>C++11</td>
<td>Matching declarations involving <TT>decltype</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1246">
<td><a href="https://cplusplus.github.io/CWG/issues/1246.html">1246</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>C++11</td>
<td>Non-deduced non-final parameter packs</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1247">
<td><a href="https://cplusplus.github.io/CWG/issues/1247.html">1247</a></td>
+ <td>[<a href="https://wg21.link/dcl.typedef">dcl.typedef</a>]</td>
<td>CD4</td>
<td>Restriction on alias name appearing in <I>type-id</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1248">
<td><a href="https://cplusplus.github.io/CWG/issues/1248.html">1248</a></td>
+ <td>[<a href="https://wg21.link/diff.iso">diff.iso</a>]</td>
<td>open</td>
<td>Updating Annex C to C99 and C23</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1249">
<td><a href="https://cplusplus.github.io/CWG/issues/1249.html">1249</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>CD6</td>
<td>Cv-qualification of nested lambda capture</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1250">
<td><a href="https://cplusplus.github.io/CWG/issues/1250.html">1250</a></td>
+ <td>[<a href="https://wg21.link/class.virtual">class.virtual</a>]</td>
<td>CD3</td>
<td>Cv-qualification of incomplete virtual function return types</td>
<td class="full" align="center">Clang 3.9</td>
</tr>
<tr id="1251">
<td><a href="https://cplusplus.github.io/CWG/issues/1251.html">1251</a></td>
+ <td>[<a href="https://wg21.link/diff.conv">diff.conv</a>]</td>
<td>CD3</td>
<td>C compatibility: casting to unqualified <TT>void*</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1252">
<td><a href="https://cplusplus.github.io/CWG/issues/1252.html">1252</a></td>
+ <td>[<a href="https://wg21.link/over.load">over.load</a>]</td>
<td>CD6</td>
<td>Overloading member function templates based on dependent return type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1253">
<td><a href="https://cplusplus.github.io/CWG/issues/1253.html">1253</a></td>
+ <td>[<a href="https://wg21.link/temp.spec">temp.spec</a>]</td>
<td>C++17</td>
<td>Generic non-template members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1254">
<td><a href="https://cplusplus.github.io/CWG/issues/1254.html">1254</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>NAD</td>
<td>odr-use vs template arguments and constexpr functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1255">
<td><a href="https://cplusplus.github.io/CWG/issues/1255.html">1255</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>drafting</td>
<td>Definition problems with <TT>constexpr</TT> functions</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="1256">
<td><a href="https://cplusplus.github.io/CWG/issues/1256.html">1256</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>open</td>
<td>Unevaluated operands are not necessarily constant expressions</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="1257">
<td><a href="https://cplusplus.github.io/CWG/issues/1257.html">1257</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>open</td>
<td>Instantiation via non-dependent references in uninstantiated templates</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1258">
<td><a href="https://cplusplus.github.io/CWG/issues/1258.html">1258</a></td>
+ <td>[<a href="https://wg21.link/temp.point">temp.point</a>]</td>
<td>CD5</td>
<td>&#8220;Instantiation context&#8221; differs from dependent lookup rules</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1259">
<td><a href="https://cplusplus.github.io/CWG/issues/1259.html">1259</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>NAD</td>
<td>Deleting a POD via a pointer to base</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1260">
<td><a href="https://cplusplus.github.io/CWG/issues/1260.html">1260</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD3</td>
<td>Incorrect use of term &#8220;overloaded&#8221; in description of odr-use</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1261">
<td><a href="https://cplusplus.github.io/CWG/issues/1261.html">1261</a></td>
+ <td>[<a href="https://wg21.link/expr">expr</a>]</td>
<td>CD3</td>
<td>Explicit handling of cv-qualification with non-class prvalues</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1262">
<td><a href="https://cplusplus.github.io/CWG/issues/1262.html">1262</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>CD3</td>
<td>Default template arguments and deduction failure</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1263">
<td><a href="https://cplusplus.github.io/CWG/issues/1263.html">1263</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>NAD</td>
<td>Mismatch between rvalue reference binding and overload resolution</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1264">
<td><a href="https://cplusplus.github.io/CWG/issues/1264.html">1264</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD3</td>
<td>Use of <TT>this</TT> in <TT>constexpr</TT> constructor</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1265">
<td><a href="https://cplusplus.github.io/CWG/issues/1265.html">1265</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>CD3</td>
<td>Mixed use of the <TT>auto</TT> specifier</td>
<td class="full" align="center">Clang 5</td>
</tr>
<tr class="open" id="1266">
<td><a href="https://cplusplus.github.io/CWG/issues/1266.html">1266</a></td>
+ <td>[<a href="https://wg21.link/lex.ext">lex.ext</a>]</td>
<td>open</td>
<td><I>user-defined-integer-literal</I> overflow</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1267">
<td><a href="https://cplusplus.github.io/CWG/issues/1267.html">1267</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>CD3</td>
<td>Rvalue reference types in <I>exception-specification</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1268">
<td><a href="https://cplusplus.github.io/CWG/issues/1268.html">1268</a></td>
+ <td>[<a href="https://wg21.link/expr.reinterpret.cast">expr.reinterpret.cast</a>]</td>
<td>CD3</td>
<td><TT>reinterpret_cast</TT> of an xvalue operand</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1269">
<td><a href="https://cplusplus.github.io/CWG/issues/1269.html">1269</a></td>
+ <td>[<a href="https://wg21.link/expr.dynamic.cast">expr.dynamic.cast</a>]</td>
<td>CD3</td>
<td><TT>dynamic_cast</TT> of an xvalue operand</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1270">
<td><a href="https://cplusplus.github.io/CWG/issues/1270.html">1270</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD3</td>
<td>Brace elision in array temporary initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1271">
<td><a href="https://cplusplus.github.io/CWG/issues/1271.html">1271</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>CD5</td>
<td>Imprecise wording regarding dependent types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1272">
<td><a href="https://cplusplus.github.io/CWG/issues/1272.html">1272</a></td>
+ <td>[<a href="https://wg21.link/class.static.data">class.static.data</a>]</td>
<td>NAD</td>
<td>Implicit definition of static data member of const literal type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1273">
<td><a href="https://cplusplus.github.io/CWG/issues/1273.html">1273</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>NAD</td>
<td>Accessibility and function signatures</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1274">
<td><a href="https://cplusplus.github.io/CWG/issues/1274.html">1274</a></td>
+ <td>[<a href="https://wg21.link/stmt.ranged">stmt.ranged</a>]</td>
<td>CD4</td>
<td>Common nonterminal for <I>expression</I> and <I>braced-init-list</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1275">
<td><a href="https://cplusplus.github.io/CWG/issues/1275.html">1275</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>CD3</td>
<td>Incorrect comment in example of template parameter pack restriction</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1276">
<td><a href="https://cplusplus.github.io/CWG/issues/1276.html">1276</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>NAD</td>
<td>Reference to <TT>stdint.h</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1277">
<td><a href="https://cplusplus.github.io/CWG/issues/1277.html">1277</a></td>
+ <td>[<a href="https://wg21.link/cstdint.syn">cstdint.syn</a>]</td>
<td>NAD</td>
<td>Lax definition of <TT>intmax_t</TT> and <TT>uintmax_t</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1278">
<td><a href="https://cplusplus.github.io/CWG/issues/1278.html">1278</a></td>
+ <td>[<a href="https://wg21.link/over.call.func">over.call.func</a>]</td>
<td>drafting</td>
<td>Incorrect treatment of contrived object</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="1279">
<td><a href="https://cplusplus.github.io/CWG/issues/1279.html">1279</a></td>
+ <td>[<a href="https://wg21.link/diff.cpp03">diff.cpp03</a>]</td>
<td>open</td>
<td>Additional differences between C++ 2003 and C++ 2011</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1280">
<td><a href="https://cplusplus.github.io/CWG/issues/1280.html">1280</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>NAD</td>
<td>Object reallocation and reference members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1281">
<td><a href="https://cplusplus.github.io/CWG/issues/1281.html">1281</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>NAD</td>
<td>Virtual and dependent base classes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1282">
<td><a href="https://cplusplus.github.io/CWG/issues/1282.html">1282</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>CD3</td>
<td>Underspecified destructor <I>exception-specification</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1283">
<td><a href="https://cplusplus.github.io/CWG/issues/1283.html">1283</a></td>
+ <td>[<a href="https://wg21.link/class.static.data">class.static.data</a>]</td>
<td>open</td>
<td>Static data members of classes with typedef name for linkage purposes</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1284">
<td><a href="https://cplusplus.github.io/CWG/issues/1284.html">1284</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>CD4</td>
<td>Should the lifetime of an array be independent of that of its elements?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1285">
<td><a href="https://cplusplus.github.io/CWG/issues/1285.html">1285</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>NAD</td>
<td>Trivial destructors and object lifetime</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1286">
<td><a href="https://cplusplus.github.io/CWG/issues/1286.html">1286</a></td>
+ <td>[<a href="https://wg21.link/temp.alias">temp.alias</a>]</td>
<td>open</td>
<td>Equivalence of alias templates</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1287">
<td><a href="https://cplusplus.github.io/CWG/issues/1287.html">1287</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>C++14</td>
<td>Direct initialization vs &#8220;implicit&#8221; conversion in reference binding</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1288">
<td><a href="https://cplusplus.github.io/CWG/issues/1288.html">1288</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD3</td>
<td>Reference list initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1289">
<td><a href="https://cplusplus.github.io/CWG/issues/1289.html">1289</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>NAD</td>
<td>Can an alias template name the current instantiation?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1290">
<td><a href="https://cplusplus.github.io/CWG/issues/1290.html">1290</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD3</td>
<td>Lifetime of the underlying array of an <TT>initializer_list</TT> member</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1291">
<td><a href="https://cplusplus.github.io/CWG/issues/1291.html">1291</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.classref">basic.lookup.classref</a>]</td>
<td>CD6</td>
<td>Looking up a <I>conversion-type-id</I></td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="1292">
<td><a href="https://cplusplus.github.io/CWG/issues/1292.html">1292</a></td>
+ <td>[<a href="https://wg21.link/temp.dep">temp.dep</a>]</td>
<td>CD4</td>
<td>Dependent calls with <I>braced-init-list</I>s containing a pack expansion</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1293">
<td><a href="https://cplusplus.github.io/CWG/issues/1293.html">1293</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD3</td>
<td>String literals in constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1294">
<td><a href="https://cplusplus.github.io/CWG/issues/1294.html">1294</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>open</td>
<td>Side effects in dynamic/static initialization</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1295">
<td><a href="https://cplusplus.github.io/CWG/issues/1295.html">1295</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD3</td>
<td>Binding a reference to an rvalue bit-field</td>
<td class="full" align="center">Clang 4</td>
</tr>
<tr id="1296">
<td><a href="https://cplusplus.github.io/CWG/issues/1296.html">1296</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>CD3</td>
<td>Ill-formed template declarations (not just definitions)</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1297">
<td><a href="https://cplusplus.github.io/CWG/issues/1297.html">1297</a></td>
+ <td>[<a href="https://wg21.link/dcl.decl">dcl.decl</a>]</td>
<td>CD3</td>
<td>Misplaced function <I>attribute-specifier</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1298">
<td><a href="https://cplusplus.github.io/CWG/issues/1298.html">1298</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>CD3</td>
<td>Incorrect example in overload resolution</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1299">
<td><a href="https://cplusplus.github.io/CWG/issues/1299.html">1299</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>CD5</td>
<td>&#8220;Temporary objects&#8221; vs &#8220;temporary expressions&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1300">
<td><a href="https://cplusplus.github.io/CWG/issues/1300.html">1300</a></td>
+ <td>[<a href="https://wg21.link/expr.type.conv">expr.type.conv</a>]</td>
<td>dup</td>
<td><TT>T()</TT> for array types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1301">
<td><a href="https://cplusplus.github.io/CWG/issues/1301.html">1301</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD3</td>
<td>Value initialization of union</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1302">
<td><a href="https://cplusplus.github.io/CWG/issues/1302.html">1302</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>CD3</td>
<td><TT>noexcept</TT> applied to expression of type <TT>void</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1303">
<td><a href="https://cplusplus.github.io/CWG/issues/1303.html">1303</a></td>
+ <td>[<a href="https://wg21.link/temp">temp</a>]</td>
<td>NAD</td>
<td>C language linkage for template with internal linkage</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1304">
<td><a href="https://cplusplus.github.io/CWG/issues/1304.html">1304</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.string">dcl.init.string</a>]</td>
<td>drafting</td>
<td>Omitted array bound with string initialization</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1305">
<td><a href="https://cplusplus.github.io/CWG/issues/1305.html">1305</a></td>
+ <td>[<a href="https://wg21.link/expr.alignof">expr.alignof</a>]</td>
<td>CD3</td>
<td><TT>alignof</TT> applied to array of unknown size</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="1306">
<td><a href="https://cplusplus.github.io/CWG/issues/1306.html">1306</a></td>
+ <td>[<a href="https://wg21.link/class.this">class.this</a>]</td>
<td>CD3</td>
<td>Modifying an object within a <TT>const</TT> member function</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1307">
<td><a href="https://cplusplus.github.io/CWG/issues/1307.html">1307</a></td>
+ <td>[<a href="https://wg21.link/over.ics.list">over.ics.list</a>]</td>
<td>C++14</td>
<td>Overload resolution based on size of array <I>initializer-list</I></td>
<td class="full" align="center">Clang 14</td>
</tr>
<tr id="1308">
<td><a href="https://cplusplus.github.io/CWG/issues/1308.html">1308</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD3</td>
<td>Completeness of class type within an <I>exception-specification</I></td>
<td class="full-superseded" align="center">Superseded by <a href="#1330">1330</a></td>
</tr>
<tr id="1309">
<td><a href="https://cplusplus.github.io/CWG/issues/1309.html">1309</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>CD4</td>
<td>Incorrect note regarding lookup of a member of the current instantiation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1310">
<td><a href="https://cplusplus.github.io/CWG/issues/1310.html">1310</a></td>
+ <td>[<a href="https://wg21.link/class.qual">class.qual</a>]</td>
<td>CD3</td>
<td>What is an &#8220;acceptable lookup result?&#8221;</td>
<td class="full" align="center">Clang 5</td>
</tr>
<tr id="1311">
<td><a href="https://cplusplus.github.io/CWG/issues/1311.html">1311</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD3</td>
<td>Volatile lvalues in constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1312">
<td><a href="https://cplusplus.github.io/CWG/issues/1312.html">1312</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD3</td>
<td>Simulated <TT>reinterpret_cast</TT> in constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1313">
<td><a href="https://cplusplus.github.io/CWG/issues/1313.html">1313</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD3</td>
<td>Undefined pointer arithmetic in constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1314">
<td><a href="https://cplusplus.github.io/CWG/issues/1314.html">1314</a></td>
+ <td>[<a href="https://wg21.link/expr.add">expr.add</a>]</td>
<td>NAD</td>
<td>Pointer arithmetic within standard-layout objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1315">
<td><a href="https://cplusplus.github.io/CWG/issues/1315.html">1315</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial.general">temp.spec.partial.general</a>]</td>
<td>CD4</td>
<td>Restrictions on non-type template arguments in partial specializations</td>
<td class="partial" align="center">Partial</td>
</tr>
<tr id="1316">
<td><a href="https://cplusplus.github.io/CWG/issues/1316.html">1316</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>NAD</td>
<td><TT>constexpr</TT> function requirements and class scope</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1317">
<td><a href="https://cplusplus.github.io/CWG/issues/1317.html">1317</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>NAD</td>
<td>Unnamed scoped enumerations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1318">
<td><a href="https://cplusplus.github.io/CWG/issues/1318.html">1318</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>CD3</td>
<td>Syntactic ambiguities with <TT>final</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1319">
<td><a href="https://cplusplus.github.io/CWG/issues/1319.html">1319</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>NAD</td>
<td>Error in pack expansion example</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1320">
<td><a href="https://cplusplus.github.io/CWG/issues/1320.html">1320</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>CD3</td>
<td>Converting scoped enumerations to <TT>bool</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1321">
<td><a href="https://cplusplus.github.io/CWG/issues/1321.html">1321</a></td>
+ <td>[<a href="https://wg21.link/temp.over.link">temp.over.link</a>]</td>
<td>CD3</td>
<td>Equivalency of dependent calls</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1322">
<td><a href="https://cplusplus.github.io/CWG/issues/1322.html">1322</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>drafting</td>
<td>Function parameter type decay in templates</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1323">
<td><a href="https://cplusplus.github.io/CWG/issues/1323.html">1323</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.grammar">dcl.attr.grammar</a>]</td>
<td>NAD</td>
<td>Nonexistent nonterminal in <I>alignment-specifier</I> grammar</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1324">
<td><a href="https://cplusplus.github.io/CWG/issues/1324.html">1324</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD3</td>
<td>Value initialization and defaulted constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1325">
<td><a href="https://cplusplus.github.io/CWG/issues/1325.html">1325</a></td>
+ <td>[<a href="https://wg21.link/dcl.pre">dcl.pre</a>]</td>
<td>NAD</td>
<td>Omitted declarator in <TT>friend</TT> declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1326">
<td><a href="https://cplusplus.github.io/CWG/issues/1326.html">1326</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>dup</td>
<td>Deducing an array bound from an <I>initializer-list</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1327">
<td><a href="https://cplusplus.github.io/CWG/issues/1327.html">1327</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>CD3</td>
<td><I>virt-specifier</I> in a defaulted definition</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1328">
<td><a href="https://cplusplus.github.io/CWG/issues/1328.html">1328</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD3</td>
<td>Conflict in reference binding vs overload resolution</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1329">
<td><a href="https://cplusplus.github.io/CWG/issues/1329.html">1329</a></td>
+ <td>[<a href="https://wg21.link/implimits">implimits</a>]</td>
<td>CD3</td>
<td>Recursive deduction substitutions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1330">
<td><a href="https://cplusplus.github.io/CWG/issues/1330.html">1330</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>CD3</td>
<td>Delayed instantiation of <TT>noexcept</TT> specifiers</td>
<td class="full" align="center">Clang 4 (C++11 onwards)</td>
</tr>
<tr id="1331">
<td><a href="https://cplusplus.github.io/CWG/issues/1331.html">1331</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>CD5</td>
<td><TT>const</TT> mismatch with defaulted copy constructor</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1332">
<td><a href="https://cplusplus.github.io/CWG/issues/1332.html">1332</a></td>
+ <td>[<a href="https://wg21.link/lex.charset">lex.charset</a>]</td>
<td>CD5</td>
<td>Handling of invalid universal-character-names</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1333">
<td><a href="https://cplusplus.github.io/CWG/issues/1333.html">1333</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>CD3</td>
<td>Omission of <TT>const</TT> in a defaulted copy constructor</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1334">
<td><a href="https://cplusplus.github.io/CWG/issues/1334.html">1334</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>NAD</td>
<td>Layout compatibility and cv-qualification</td>
<td class="full-superseded" align="center">Superseded by <a href="#1719">1719</a></td>
</tr>
<tr id="1335">
<td><a href="https://cplusplus.github.io/CWG/issues/1335.html">1335</a></td>
+ <td>[<a href="https://wg21.link/cpp.stringize">cpp.stringize</a>]</td>
<td>CD6</td>
<td>Stringizing, extended characters, and universal-character-names</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1336">
<td><a href="https://cplusplus.github.io/CWG/issues/1336.html">1336</a></td>
+ <td>[<a href="https://wg21.link/class.conv.ctor">class.conv.ctor</a>]</td>
<td>CD3</td>
<td>Definition of &#8220;converting constructor&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1337">
<td><a href="https://cplusplus.github.io/CWG/issues/1337.html">1337</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.partial">temp.deduct.partial</a>]</td>
<td>dup</td>
<td>Partial ordering and non-deduced parameters</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1338">
<td><a href="https://cplusplus.github.io/CWG/issues/1338.html">1338</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.allocation">basic.stc.dynamic.allocation</a>]</td>
<td>CD4</td>
<td>Aliasing and allocation functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1339">
<td><a href="https://cplusplus.github.io/CWG/issues/1339.html">1339</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>NAD</td>
<td>Parenthesized <I>braced-init-list</I> and arrays</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1340">
<td><a href="https://cplusplus.github.io/CWG/issues/1340.html">1340</a></td>
+ <td>[<a href="https://wg21.link/expr.mptr.oper">expr.mptr.oper</a>]</td>
<td>CD3</td>
<td>Complete type in member pointer expressions</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="1341">
<td><a href="https://cplusplus.github.io/CWG/issues/1341.html">1341</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>NAD</td>
<td>Bit-field initializers</td>
<td class="na" align="center">Superseded by <a href="https://wg21.link/P0683R1">P0683R1</a></td>
</tr>
<tr id="1342">
<td><a href="https://cplusplus.github.io/CWG/issues/1342.html">1342</a></td>
+ <td>[<a href="https://wg21.link/dcl.decl">dcl.decl</a>]</td>
<td>CD6</td>
<td>Order of initialization with multiple declarators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1343">
<td><a href="https://cplusplus.github.io/CWG/issues/1343.html">1343</a></td>
+ <td>[<a href="https://wg21.link/intro.execution">intro.execution</a>]</td>
<td>C++17</td>
<td>Sequencing of non-class initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1344">
<td><a href="https://cplusplus.github.io/CWG/issues/1344.html">1344</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>C++14</td>
<td>Adding new special member functions to a class via default arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1345">
<td><a href="https://cplusplus.github.io/CWG/issues/1345.html">1345</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>CD3</td>
<td>Initialization of anonymous union class members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1346">
<td><a href="https://cplusplus.github.io/CWG/issues/1346.html">1346</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>CD3</td>
<td><I>expression-list</I> initializers and the <TT>auto</TT> specifier</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="1347">
<td><a href="https://cplusplus.github.io/CWG/issues/1347.html">1347</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>CD3</td>
<td>Consistency of <TT>auto</TT> in multiple-declarator declarations</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr class="open" id="1348">
<td><a href="https://cplusplus.github.io/CWG/issues/1348.html">1348</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>drafting</td>
<td>Use of <TT>auto</TT> in a <I>trailing-return-type</I></td>
<td align="center">Not resolved</td>
</tr>
<tr id="1349">
<td><a href="https://cplusplus.github.io/CWG/issues/1349.html">1349</a></td>
+ <td>[<a href="https://wg21.link/temp.alias">temp.alias</a>]</td>
<td>dup</td>
<td>Consistency of alias template redeclarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1350">
<td><a href="https://cplusplus.github.io/CWG/issues/1350.html">1350</a></td>
+ <td>[<a href="https://wg21.link/class.inhctor">class.inhctor</a>]</td>
<td>CD3</td>
<td>Incorrect exception specification for inherited constructors</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="1351">
<td><a href="https://cplusplus.github.io/CWG/issues/1351.html">1351</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>CD4</td>
<td>Problems with implicitly-declared <I>exception-specification</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1352">
<td><a href="https://cplusplus.github.io/CWG/issues/1352.html">1352</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.class">basic.scope.class</a>]</td>
<td>CD3</td>
<td>Inconsistent class scope and completeness rules</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="1353">
<td><a href="https://cplusplus.github.io/CWG/issues/1353.html">1353</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>CD7</td>
<td>Array and variant members and deleted special member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1354">
<td><a href="https://cplusplus.github.io/CWG/issues/1354.html">1354</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.noexcept">expr.unary.noexcept</a>]</td>
<td>CD3</td>
<td>Destructor exceptions for temporaries in noexcept expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1355">
<td><a href="https://cplusplus.github.io/CWG/issues/1355.html">1355</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>CD3</td>
<td>Aggregates and &#8220;user-provided&#8221; constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1356">
<td><a href="https://cplusplus.github.io/CWG/issues/1356.html">1356</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>CD4</td>
<td>Exception specifications of copy assignment operators with virtual bases</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1357">
<td><a href="https://cplusplus.github.io/CWG/issues/1357.html">1357</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD3</td>
<td><I>brace-or-equal-initializer</I>s for function and typedef members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1358">
<td><a href="https://cplusplus.github.io/CWG/issues/1358.html">1358</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>CD3</td>
<td>Unintentionally ill-formed <TT>constexpr</TT> function template instances</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="1359">
<td><a href="https://cplusplus.github.io/CWG/issues/1359.html">1359</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>CD3</td>
<td><TT>constexpr</TT> union constructors</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="1360">
<td><a href="https://cplusplus.github.io/CWG/issues/1360.html">1360</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>CD6</td>
<td><TT>constexpr</TT> defaulted default constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1361">
<td><a href="https://cplusplus.github.io/CWG/issues/1361.html">1361</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>CD3</td>
<td>Requirement on <I>brace-or-equal-initializer</I>s of literal types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1362">
<td><a href="https://cplusplus.github.io/CWG/issues/1362.html">1362</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD3</td>
<td>Complete type required for implicit conversion to <TT>T&amp;</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1363">
<td><a href="https://cplusplus.github.io/CWG/issues/1363.html">1363</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>CD3</td>
<td>Triviality vs multiple default constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1364">
<td><a href="https://cplusplus.github.io/CWG/issues/1364.html">1364</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD3</td>
<td><TT>constexpr</TT> function parameters</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1365">
<td><a href="https://cplusplus.github.io/CWG/issues/1365.html">1365</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD3</td>
<td>Calling undefined <TT>constexpr</TT> functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1366">
<td><a href="https://cplusplus.github.io/CWG/issues/1366.html">1366</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>CD3</td>
<td>Deleted <TT>constexpr</TT> constructors and virtual base classes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1367">
<td><a href="https://cplusplus.github.io/CWG/issues/1367.html">1367</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD3</td>
<td>Use of <TT>this</TT> in a constant expression</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1368">
<td><a href="https://cplusplus.github.io/CWG/issues/1368.html">1368</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD3</td>
<td>Value initialization and defaulted constructors (part 2)</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1369">
<td><a href="https://cplusplus.github.io/CWG/issues/1369.html">1369</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>CD3</td>
<td>Function invocation substitution of <TT>this</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1370">
<td><a href="https://cplusplus.github.io/CWG/issues/1370.html">1370</a></td>
+ <td>[<a href="https://wg21.link/cpp.replace">cpp.replace</a>]</td>
<td>CD3</td>
<td><I>identifier-list</I> cannot contain ellipsis</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1371">
<td><a href="https://cplusplus.github.io/CWG/issues/1371.html">1371</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>NAD</td>
<td>Deduction from <TT>T&amp;&amp;</TT> in return types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1372">
<td><a href="https://cplusplus.github.io/CWG/issues/1372.html">1372</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.conv">temp.deduct.conv</a>]</td>
<td>CD3</td>
<td>Cross-references incorrect in conversion function template argument deduction</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1373">
<td><a href="https://cplusplus.github.io/CWG/issues/1373.html">1373</a></td>
+ <td>[<a href="https://wg21.link/over.match.ref">over.match.ref</a>]</td>
<td>dup</td>
<td>Overload resolution changes matching reference-binding changes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1374">
<td><a href="https://cplusplus.github.io/CWG/issues/1374.html">1374</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>CD3</td>
<td>Qualification conversion vs difference in reference binding</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1375">
<td><a href="https://cplusplus.github.io/CWG/issues/1375.html">1375</a></td>
+ <td>[<a href="https://wg21.link/class.union">class.union</a>]</td>
<td>CD3</td>
<td>Reference to anonymous union?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1376">
<td><a href="https://cplusplus.github.io/CWG/issues/1376.html">1376</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>C++14</td>
<td><TT>static_cast</TT> of temporary to rvalue reference</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1377">
<td><a href="https://cplusplus.github.io/CWG/issues/1377.html">1377</a></td>
+ <td>[<a href="https://wg21.link/diff.cpp03">diff.cpp03</a>]</td>
<td>dup</td>
<td>Access declarations not mentioned in Annex C</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1378">
<td><a href="https://cplusplus.github.io/CWG/issues/1378.html">1378</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>CD5</td>
<td>When is an instantiation required?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1379">
<td><a href="https://cplusplus.github.io/CWG/issues/1379.html">1379</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>NAD</td>
<td>Is <TT>std::initializer_list</TT> an aggregate?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1380">
<td><a href="https://cplusplus.github.io/CWG/issues/1380.html">1380</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>CD3</td>
<td>Type definitions in <I>template-parameter</I> <I>parameter-declaration</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1381">
<td><a href="https://cplusplus.github.io/CWG/issues/1381.html">1381</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>CD3</td>
<td>Implicitly-declared special member functions and default <TT>nothrow</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1382">
<td><a href="https://cplusplus.github.io/CWG/issues/1382.html">1382</a></td>
+ <td>[<a href="https://wg21.link/dcl.decl">dcl.decl</a>]</td>
<td>CD3</td>
<td>Dead code for constructor names</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1383">
<td><a href="https://cplusplus.github.io/CWG/issues/1383.html">1383</a></td>
+ <td>[<a href="https://wg21.link/expr">expr</a>]</td>
<td>CD3</td>
<td>Clarifying discarded-value expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1384">
<td><a href="https://cplusplus.github.io/CWG/issues/1384.html">1384</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>NAD</td>
<td><TT>reinterpret_cast</TT> in constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1385">
<td><a href="https://cplusplus.github.io/CWG/issues/1385.html">1385</a></td>
+ <td>[<a href="https://wg21.link/over.match.oper">over.match.oper</a>]</td>
<td>CD3</td>
<td>Syntactic forms of conversion functions for surrogate call functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1386">
<td><a href="https://cplusplus.github.io/CWG/issues/1386.html">1386</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.explicit">temp.arg.explicit</a>]</td>
<td>NAD</td>
<td>Explicitly-specified partial argument list with multiple parameter packs</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1387">
<td><a href="https://cplusplus.github.io/CWG/issues/1387.html">1387</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>CD3</td>
<td>Missing non-deduced context for <TT>decltype</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1388">
<td><a href="https://cplusplus.github.io/CWG/issues/1388.html">1388</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>CD3</td>
<td>Missing non-deduced context following a function parameter pack</td>
<td class="full" align="center">Clang 4</td>
</tr>
<tr id="1389">
<td><a href="https://cplusplus.github.io/CWG/issues/1389.html">1389</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>NAD</td>
<td>Recursive reference in <I>trailing-return-type</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1390">
<td><a href="https://cplusplus.github.io/CWG/issues/1390.html">1390</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>drafting</td>
<td>Dependency of alias template specializations</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1391">
<td><a href="https://cplusplus.github.io/CWG/issues/1391.html">1391</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.explicit">temp.arg.explicit</a>]</td>
<td>CD4</td>
<td>Conversions to parameter types with non-deduced template arguments</td>
<td class="partial" align="center">Partial</td>
</tr>
<tr id="1392">
<td><a href="https://cplusplus.github.io/CWG/issues/1392.html">1392</a></td>
+ <td>[<a href="https://wg21.link/over.match.ref">over.match.ref</a>]</td>
<td>CD3</td>
<td>Explicit conversion functions for references and non-references</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1393">
<td><a href="https://cplusplus.github.io/CWG/issues/1393.html">1393</a></td>
+ <td>[<a href="https://wg21.link/temp.variadic">temp.variadic</a>]</td>
<td>C++17</td>
<td>Pack expansions in <I>using-declaration</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1394">
<td><a href="https://cplusplus.github.io/CWG/issues/1394.html">1394</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>CD3</td>
<td>Incomplete types as parameters of deleted functions</td>
<td class="full" align="center">Clang 15</td>
</tr>
<tr id="1395">
<td><a href="https://cplusplus.github.io/CWG/issues/1395.html">1395</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>C++17</td>
<td>Partial ordering of variadic templates reconsidered</td>
<td class="full" align="center">Clang 16</td>
</tr>
<tr id="1396">
<td><a href="https://cplusplus.github.io/CWG/issues/1396.html">1396</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>C++23</td>
<td>Deferred instantiation and checking of non-static data member initializers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1397">
<td><a href="https://cplusplus.github.io/CWG/issues/1397.html">1397</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD4</td>
<td>Class completeness in non-static data member initializers</td>
<td class="full" align="center">Clang 3.2</td>
</tr>
<tr id="1398">
<td><a href="https://cplusplus.github.io/CWG/issues/1398.html">1398</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.nontype">temp.arg.nontype</a>]</td>
<td>CD3</td>
<td>Non-type template parameters of type <TT>std::nullptr_t</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1399">
<td><a href="https://cplusplus.github.io/CWG/issues/1399.html">1399</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>CD3</td>
<td>Deduction with multiple function parameter packs</td>
<td class="full" align="center">Duplicate of <a href="#1388">1388</a></td>
</tr>
<tr id="1400">
<td><a href="https://cplusplus.github.io/CWG/issues/1400.html">1400</a></td>
+ <td>[<a href="https://wg21.link/expr.eq">expr.eq</a>]</td>
<td>NAD</td>
<td>Function pointer equality</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1401">
<td><a href="https://cplusplus.github.io/CWG/issues/1401.html">1401</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD3</td>
<td>Similar types and reference compatibility</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1402">
<td><a href="https://cplusplus.github.io/CWG/issues/1402.html">1402</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>CD3</td>
<td>Move functions too often deleted</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1403">
<td><a href="https://cplusplus.github.io/CWG/issues/1403.html">1403</a></td>
+ <td>[<a href="https://wg21.link/lex.comment">lex.comment</a>]</td>
<td>CD6</td>
<td>Universal-character-names in comments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1404">
<td><a href="https://cplusplus.github.io/CWG/issues/1404.html">1404</a></td>
+ <td>[<a href="https://wg21.link/class.union">class.union</a>]</td>
<td>open</td>
<td>Object reallocation in unions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1405">
<td><a href="https://cplusplus.github.io/CWG/issues/1405.html">1405</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>CD3</td>
<td><TT>constexpr</TT> and mutable members of literal types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1406">
<td><a href="https://cplusplus.github.io/CWG/issues/1406.html">1406</a></td>
+ <td>[<a href="https://wg21.link/temp.func.order">temp.func.order</a>]</td>
<td>CD3</td>
<td><I>ref-qualifier</I>s and added parameters of non-static member function templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1407">
<td><a href="https://cplusplus.github.io/CWG/issues/1407.html">1407</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>NAD</td>
<td>Integral to <TT>bool</TT> conversion in converted constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1408">
<td><a href="https://cplusplus.github.io/CWG/issues/1408.html">1408</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>CD3</td>
<td>What is &#8220;the same aggregate initialization?&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1409">
<td><a href="https://cplusplus.github.io/CWG/issues/1409.html">1409</a></td>
+ <td>[<a href="https://wg21.link/over.ics.list">over.ics.list</a>]</td>
<td>CD3</td>
<td>What is the second standard conversion sequence of a list-initialization sequence?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1410">
<td><a href="https://cplusplus.github.io/CWG/issues/1410.html">1410</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>CD3</td>
<td>Reference overload tiebreakers should apply to rvalue references</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1411">
<td><a href="https://cplusplus.github.io/CWG/issues/1411.html">1411</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>CD3</td>
<td>More on global scope <TT>::</TT> in <I>nested-name-specifier</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1412">
<td><a href="https://cplusplus.github.io/CWG/issues/1412.html">1412</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>CD3</td>
<td>Problems in specifying pointer conversions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1413">
<td><a href="https://cplusplus.github.io/CWG/issues/1413.html">1413</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.constexpr">temp.dep.constexpr</a>]</td>
<td>CD3</td>
<td>Missing cases of value-dependency</td>
<td class="full" align="center">Clang 12</td>
</tr>
<tr class="open" id="1414">
<td><a href="https://cplusplus.github.io/CWG/issues/1414.html">1414</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>drafting</td>
<td>Binding an rvalue reference to a reference-unrelated lvalue</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1415">
<td><a href="https://cplusplus.github.io/CWG/issues/1415.html">1415</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD3</td>
<td>Missing prohibition of block-scope definition of <TT>extern</TT> object</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1416">
<td><a href="https://cplusplus.github.io/CWG/issues/1416.html">1416</a></td>
+ <td>[<a href="https://wg21.link/expr.typeid">expr.typeid</a>]</td>
<td>CD3</td>
<td>Function cv-qualifiers and <TT>typeid</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1417">
<td><a href="https://cplusplus.github.io/CWG/issues/1417.html">1417</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>C++14</td>
<td>Pointers/references to functions with cv-qualifiers or <I>ref-qualifier</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1418">
<td><a href="https://cplusplus.github.io/CWG/issues/1418.html">1418</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD3</td>
<td>Type of <TT>initializer_list</TT> backing array</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1419">
<td><a href="https://cplusplus.github.io/CWG/issues/1419.html">1419</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>NAD</td>
<td>Evaluation order in aggregate initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1420">
<td><a href="https://cplusplus.github.io/CWG/issues/1420.html">1420</a></td>
+ <td>[<a href="https://wg21.link/class.abstract">class.abstract</a>]</td>
<td>NAD</td>
<td>Abstract final classes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1421">
<td><a href="https://cplusplus.github.io/CWG/issues/1421.html">1421</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>NAD</td>
<td>Full expressions and aggregate initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1422">
<td><a href="https://cplusplus.github.io/CWG/issues/1422.html">1422</a></td>
+ <td>[<a href="https://wg21.link/lex.ccon">lex.ccon</a>]</td>
<td>dup</td>
<td>Type of character literals containing universal-character-names</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1423">
<td><a href="https://cplusplus.github.io/CWG/issues/1423.html">1423</a></td>
+ <td>[<a href="https://wg21.link/conv.fctptr">conv.fctptr</a>]</td>
<td>CD3</td>
<td>Convertibility of <TT>nullptr</TT> to <TT>bool</TT></td>
<td class="full" align="center">Clang 11</td>
</tr>
<tr id="1424">
<td><a href="https://cplusplus.github.io/CWG/issues/1424.html">1424</a></td>
+ <td>[<a href="https://wg21.link/except.ctor">except.ctor</a>]</td>
<td>C++14</td>
<td>When must sub-object destructors be accessible?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1425">
<td><a href="https://cplusplus.github.io/CWG/issues/1425.html">1425</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD3</td>
<td>Base-class subobjects of standard-layout structs</td>
<td class="na" align="center">N/A (ABI constraint)</td>
</tr>
<tr id="1426">
<td><a href="https://cplusplus.github.io/CWG/issues/1426.html">1426</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>CD5</td>
<td>Allowing additional parameter types in defaulted functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1427">
<td><a href="https://cplusplus.github.io/CWG/issues/1427.html">1427</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>NAD</td>
<td>Default constructor and deleted or inaccessible destructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1428">
<td><a href="https://cplusplus.github.io/CWG/issues/1428.html">1428</a></td>
+ <td>[<a href="https://wg21.link/basic.type.qualifier">basic.type.qualifier</a>]</td>
<td>CD3</td>
<td>Dynamic const objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1429">
<td><a href="https://cplusplus.github.io/CWG/issues/1429.html">1429</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.temp">basic.scope.temp</a>]</td>
<td>NAD</td>
<td>Scope of a member template's template parameter</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1430">
<td><a href="https://cplusplus.github.io/CWG/issues/1430.html">1430</a></td>
+ <td>[<a href="https://wg21.link/temp.alias">temp.alias</a>]</td>
<td>open</td>
<td>Pack expansion into fixed alias template parameter list</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1431">
<td><a href="https://cplusplus.github.io/CWG/issues/1431.html">1431</a></td>
+ <td>[<a href="https://wg21.link/except">except</a>]</td>
<td>CD3</td>
<td>Exceptions from other than <I>throw-expression</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1432">
<td><a href="https://cplusplus.github.io/CWG/issues/1432.html">1432</a></td>
+ <td>[<a href="https://wg21.link/temp.variadic">temp.variadic</a>]</td>
<td>open</td>
<td>Newly-ambiguous variadic template expansions</td>
<td align="center">
@@ -8419,912 +9809,1064 @@ and <I>POD class</I></td>
</tr>
<tr id="1433">
<td><a href="https://cplusplus.github.io/CWG/issues/1433.html">1433</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.pdecl">basic.scope.pdecl</a>]</td>
<td>NAD</td>
<td><I>trailing-return-type</I> and point of declaration</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1434">
<td><a href="https://cplusplus.github.io/CWG/issues/1434.html">1434</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>NAD</td>
<td>Parenthesized <I>braced-init-list</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1435">
<td><a href="https://cplusplus.github.io/CWG/issues/1435.html">1435</a></td>
+ <td>[<a href="https://wg21.link/dcl.meaning">dcl.meaning</a>]</td>
<td>CD3</td>
<td><I>template-id</I> as the declarator for a class template constructor</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1436">
<td><a href="https://cplusplus.github.io/CWG/issues/1436.html">1436</a></td>
+ <td>[<a href="https://wg21.link/cpp.cond">cpp.cond</a>]</td>
<td>open</td>
<td>Interaction of constant expression changes with preprocessor expressions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1437">
<td><a href="https://cplusplus.github.io/CWG/issues/1437.html">1437</a></td>
+ <td>[<a href="https://wg21.link/dcl.typedef">dcl.typedef</a>]</td>
<td>CD3</td>
<td><TT>alignas</TT> in <I>alias-declaration</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1438">
<td><a href="https://cplusplus.github.io/CWG/issues/1438.html">1438</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.safety">basic.stc.dynamic.safety</a>]</td>
<td>CD3</td>
<td>Non-dereference use of invalid pointers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1439">
<td><a href="https://cplusplus.github.io/CWG/issues/1439.html">1439</a></td>
+ <td>[<a href="https://wg21.link/namespace.memdef">namespace.memdef</a>]</td>
<td>CD3</td>
<td>Lookup and friend template declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1440">
<td><a href="https://cplusplus.github.io/CWG/issues/1440.html">1440</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.general">expr.prim.general</a>]</td>
<td>CD3</td>
<td>Acceptable <I>decltype-specifier</I>s used as <I>nested-name-specifier</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1441">
<td><a href="https://cplusplus.github.io/CWG/issues/1441.html">1441</a></td>
+ <td>[<a href="https://wg21.link/intro.execution">intro.execution</a>]</td>
<td>C++14</td>
<td>Unclear wording for signal handler restrictions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1442">
<td><a href="https://cplusplus.github.io/CWG/issues/1442.html">1442</a></td>
+ <td>[<a href="https://wg21.link/stmt.ranged">stmt.ranged</a>]</td>
<td>CD3</td>
<td>Argument-dependent lookup in the range-based <TT>for</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1443">
<td><a href="https://cplusplus.github.io/CWG/issues/1443.html">1443</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>NAD</td>
<td>Default arguments and non-static data members</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="1444">
<td><a href="https://cplusplus.github.io/CWG/issues/1444.html">1444</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>drafting</td>
<td>Type adjustments of non-type template parameters</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1445">
<td><a href="https://cplusplus.github.io/CWG/issues/1445.html">1445</a></td>
+ <td>[<a href="https://wg21.link/stmt.ranged">stmt.ranged</a>]</td>
<td>dup</td>
<td>Argument-dependent lookup of <TT>begin</TT> and <TT>end</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1446">
<td><a href="https://cplusplus.github.io/CWG/issues/1446.html">1446</a></td>
+ <td>[<a href="https://wg21.link/temp.func.order">temp.func.order</a>]</td>
<td>CD4</td>
<td>Member function with no <I>ref-qualifier</I> and non-member function with rvalue reference</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1447">
<td><a href="https://cplusplus.github.io/CWG/issues/1447.html">1447</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>CD3</td>
<td><TT>static_cast</TT> of bit-field lvalue to rvalue reference</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1448">
<td><a href="https://cplusplus.github.io/CWG/issues/1448.html">1448</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>NAD</td>
<td>Integral values of type <TT>bool</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1449">
<td><a href="https://cplusplus.github.io/CWG/issues/1449.html">1449</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD3</td>
<td>Narrowing conversion of negative value to unsigned type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1450">
<td><a href="https://cplusplus.github.io/CWG/issues/1450.html">1450</a></td>
+ <td>[<a href="https://wg21.link/expr.mul">expr.mul</a>]</td>
<td>CD3</td>
<td><TT>INT_MIN % -1</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1451">
<td><a href="https://cplusplus.github.io/CWG/issues/1451.html">1451</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.nontype">temp.arg.nontype</a>]</td>
<td>CD4</td>
<td>Objects with no linkage in non-type template arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1452">
<td><a href="https://cplusplus.github.io/CWG/issues/1452.html">1452</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>NAD</td>
<td>Value-initialized objects may be constants</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1453">
<td><a href="https://cplusplus.github.io/CWG/issues/1453.html">1453</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>CD3</td>
<td>Volatile members in literal classes?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1454">
<td><a href="https://cplusplus.github.io/CWG/issues/1454.html">1454</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD3</td>
<td>Passing constants through <TT>constexpr</TT> functions via references</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1455">
<td><a href="https://cplusplus.github.io/CWG/issues/1455.html">1455</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD3</td>
<td>Lvalue converted constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1456">
<td><a href="https://cplusplus.github.io/CWG/issues/1456.html">1456</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD3</td>
<td>Address constant expression designating the one-past-the-end address</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1457">
<td><a href="https://cplusplus.github.io/CWG/issues/1457.html">1457</a></td>
+ <td>[<a href="https://wg21.link/expr.shift">expr.shift</a>]</td>
<td>CD3</td>
<td>Undefined behavior in left-shift</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1458">
<td><a href="https://cplusplus.github.io/CWG/issues/1458.html">1458</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.op">expr.unary.op</a>]</td>
<td>CD3</td>
<td>Address of incomplete type vs <TT>operator&amp;()</TT></td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr class="open" id="1459">
<td><a href="https://cplusplus.github.io/CWG/issues/1459.html">1459</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>open</td>
<td>Reference-binding tiebreakers in overload resolution</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1460">
<td><a href="https://cplusplus.github.io/CWG/issues/1460.html">1460</a></td>
+ <td>[<a href="https://wg21.link/class.union">class.union</a>]</td>
<td>C++14</td>
<td>What is an empty union?</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="1461">
<td><a href="https://cplusplus.github.io/CWG/issues/1461.html">1461</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>NAD</td>
<td>Narrowing conversions to bit-fields</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1462">
<td><a href="https://cplusplus.github.io/CWG/issues/1462.html">1462</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>CD3</td>
<td>Deduction failure vs &#8220;ill-formed, no diagnostic required&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1463">
<td><a href="https://cplusplus.github.io/CWG/issues/1463.html">1463</a></td>
+ <td>[<a href="https://wg21.link/temp.pre">temp.pre</a>]</td>
<td>drafting</td>
<td><TT>extern "C"</TT> alias templates</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1464">
<td><a href="https://cplusplus.github.io/CWG/issues/1464.html">1464</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD3</td>
<td>Negative array bound in a <I>new-expression</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1465">
<td><a href="https://cplusplus.github.io/CWG/issues/1465.html">1465</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.noexcept">expr.unary.noexcept</a>]</td>
<td>CD4</td>
<td><TT>noexcept</TT> and <TT>std::bad_array_new_length</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1466">
<td><a href="https://cplusplus.github.io/CWG/issues/1466.html">1466</a></td>
+ <td>[<a href="https://wg21.link/intro.multithread">intro.multithread</a>]</td>
<td>C++14</td>
<td>Visible sequences of side effects are redundant</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1467">
<td><a href="https://cplusplus.github.io/CWG/issues/1467.html">1467</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD4</td>
<td>List-initialization of aggregate from same-type object</td>
<td class="full" align="center">Clang 3.7 (C++11 onwards)</td>
</tr>
<tr id="1468">
<td><a href="https://cplusplus.github.io/CWG/issues/1468.html">1468</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>CD5</td>
<td><TT>typeid</TT>, overload resolution, and implicit lambda capture</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1469">
<td><a href="https://cplusplus.github.io/CWG/issues/1469.html">1469</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD5</td>
<td>Omitted bound in array <I>new-expression</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1470">
<td><a href="https://cplusplus.github.io/CWG/issues/1470.html">1470</a></td>
+ <td>[<a href="https://wg21.link/intro.multithread">intro.multithread</a>]</td>
<td>NAD</td>
<td>Thread migration</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1471">
<td><a href="https://cplusplus.github.io/CWG/issues/1471.html">1471</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>CD3</td>
<td>Nested type of non-dependent base</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1472">
<td><a href="https://cplusplus.github.io/CWG/issues/1472.html">1472</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD3</td>
<td>odr-use of reference variables</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1473">
<td><a href="https://cplusplus.github.io/CWG/issues/1473.html">1473</a></td>
+ <td>[<a href="https://wg21.link/over.literal">over.literal</a>]</td>
<td>CD3</td>
<td>Syntax of <I>literal-operator-id</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1474">
<td><a href="https://cplusplus.github.io/CWG/issues/1474.html">1474</a></td>
+ <td>[<a href="https://wg21.link/lex.ext">lex.ext</a>]</td>
<td>NAD</td>
<td>User-defined literals and <TT>&lt;inttypes.h&gt;</TT> format macros</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1475">
<td><a href="https://cplusplus.github.io/CWG/issues/1475.html">1475</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.depend">dcl.attr.depend</a>]</td>
<td>CD3</td>
<td>Errors in <TT>[[carries_dependency]]</TT> example</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1476">
<td><a href="https://cplusplus.github.io/CWG/issues/1476.html">1476</a></td>
+ <td>[<a href="https://wg21.link/intro.defs">intro.defs</a>]</td>
<td>CD3</td>
<td>Definition of user-defined type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1477">
<td><a href="https://cplusplus.github.io/CWG/issues/1477.html">1477</a></td>
+ <td>[<a href="https://wg21.link/namespace.memdef">namespace.memdef</a>]</td>
<td>CD3</td>
<td>Definition of a <TT>friend</TT> outside its namespace</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="1478">
<td><a href="https://cplusplus.github.io/CWG/issues/1478.html">1478</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>CD6</td>
<td><TT>template</TT> keyword for dependent template template arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1479">
<td><a href="https://cplusplus.github.io/CWG/issues/1479.html">1479</a></td>
+ <td>[<a href="https://wg21.link/over.literal">over.literal</a>]</td>
<td>CD3</td>
<td>Literal operators and default arguments</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="1480">
<td><a href="https://cplusplus.github.io/CWG/issues/1480.html">1480</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD3</td>
<td>Constant initialization via non-constant temporary</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1481">
<td><a href="https://cplusplus.github.io/CWG/issues/1481.html">1481</a></td>
+ <td>[<a href="https://wg21.link/over.inc">over.inc</a>]</td>
<td>CD3</td>
<td>Increment/decrement operators with reference parameters</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1482">
<td><a href="https://cplusplus.github.io/CWG/issues/1482.html">1482</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.pdecl">basic.scope.pdecl</a>]</td>
<td>CD3</td>
<td>Point of declaration of enumeration</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="1483">
<td><a href="https://cplusplus.github.io/CWG/issues/1483.html">1483</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>NAD</td>
<td>Non-dependent <I>static_assert-declaration</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1484">
<td><a href="https://cplusplus.github.io/CWG/issues/1484.html">1484</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>CD4</td>
<td>Unused local classes of function templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1485">
<td><a href="https://cplusplus.github.io/CWG/issues/1485.html">1485</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>drafting</td>
<td>Out-of-class definition of member unscoped opaque enumeration</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="1486">
<td><a href="https://cplusplus.github.io/CWG/issues/1486.html">1486</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.funcaddr">temp.deduct.funcaddr</a>]</td>
<td>drafting</td>
<td>Base-derived conversion in member pointer deduction</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1487">
<td><a href="https://cplusplus.github.io/CWG/issues/1487.html">1487</a></td>
+ <td>[<a href="https://wg21.link/class.inhctor">class.inhctor</a>]</td>
<td>CD3</td>
<td>When are inheriting constructors declared?</td>
<td class="full" align="center">Clang 3.3</td>
</tr>
<tr class="open" id="1488">
<td><a href="https://cplusplus.github.io/CWG/issues/1488.html">1488</a></td>
+ <td>[<a href="https://wg21.link/dcl.name">dcl.name</a>]</td>
<td>drafting</td>
<td><I>abstract-pack-declarator</I>s in <I>type-id</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1489">
<td><a href="https://cplusplus.github.io/CWG/issues/1489.html">1489</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>CD3</td>
<td>Is value-initialization of an array constant initialization?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1490">
<td><a href="https://cplusplus.github.io/CWG/issues/1490.html">1490</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD4</td>
<td>List-initialization from a string literal</td>
<td class="full" align="center">Clang 3.7 (C++11 onwards)</td>
</tr>
<tr id="1491">
<td><a href="https://cplusplus.github.io/CWG/issues/1491.html">1491</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>CD3</td>
<td>Move construction and rvalue reference members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1492">
<td><a href="https://cplusplus.github.io/CWG/issues/1492.html">1492</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>CD4</td>
<td>Exception specifications on template destructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1493">
<td><a href="https://cplusplus.github.io/CWG/issues/1493.html">1493</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>C++14</td>
<td>Criteria for move-construction</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1494">
<td><a href="https://cplusplus.github.io/CWG/issues/1494.html">1494</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD3</td>
<td>Temporary initialization for reference binding in list-initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1495">
<td><a href="https://cplusplus.github.io/CWG/issues/1495.html">1495</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial">temp.spec.partial</a>]</td>
<td>CD3</td>
<td>Partial specialization of variadic class template</td>
<td class="full" align="center">Clang 4</td>
</tr>
<tr id="1496">
<td><a href="https://cplusplus.github.io/CWG/issues/1496.html">1496</a></td>
+ <td>[<a href="https://wg21.link/class.name">class.name</a>]</td>
<td>CD4</td>
<td>Triviality with deleted and missing default constructors</td>
<td class="none" align="center">No</td>
</tr>
<tr id="1497">
<td><a href="https://cplusplus.github.io/CWG/issues/1497.html">1497</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>NAD</td>
<td>Aggregate initialization with parenthesized string literal</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1498">
<td><a href="https://cplusplus.github.io/CWG/issues/1498.html">1498</a></td>
+ <td>[<a href="https://wg21.link/stmt.ranged">stmt.ranged</a>]</td>
<td>dup</td>
<td>Lifetime of temporaries in range-based <TT>for</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1499">
<td><a href="https://cplusplus.github.io/CWG/issues/1499.html">1499</a></td>
+ <td>[<a href="https://wg21.link/class.copy.assign">class.copy.assign</a>]</td>
<td>CD7</td>
<td>Missing case for deleted move assignment operator</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1500">
<td><a href="https://cplusplus.github.io/CWG/issues/1500.html">1500</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.candidate">temp.dep.candidate</a>]</td>
<td>CD6</td>
<td>Name lookup of dependent conversion function</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1501">
<td><a href="https://cplusplus.github.io/CWG/issues/1501.html">1501</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>NAD</td>
<td>Nested braces in list-initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1502">
<td><a href="https://cplusplus.github.io/CWG/issues/1502.html">1502</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD3</td>
<td>Value initialization of unions with member initializers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1503">
<td><a href="https://cplusplus.github.io/CWG/issues/1503.html">1503</a></td>
+ <td>[<a href="https://wg21.link/except.throw">except.throw</a>]</td>
<td>CD3</td>
<td>Exceptions during copy to exception object</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1504">
<td><a href="https://cplusplus.github.io/CWG/issues/1504.html">1504</a></td>
+ <td>[<a href="https://wg21.link/expr.add">expr.add</a>]</td>
<td>CD3</td>
<td>Pointer arithmetic after derived-base conversion</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1505">
<td><a href="https://cplusplus.github.io/CWG/issues/1505.html">1505</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>dup</td>
<td>Direct binding of reference to temporary in list-initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1506">
<td><a href="https://cplusplus.github.io/CWG/issues/1506.html">1506</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD3</td>
<td>Value category of <TT>initializer_list</TT> object</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1507">
<td><a href="https://cplusplus.github.io/CWG/issues/1507.html">1507</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD3</td>
<td>Value initialization with trivial inaccessible default constructor</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1508">
<td><a href="https://cplusplus.github.io/CWG/issues/1508.html">1508</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>C++14</td>
<td>Template initializer-list constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1509">
<td><a href="https://cplusplus.github.io/CWG/issues/1509.html">1509</a></td>
+ <td>[<a href="https://wg21.link/intro.defs">intro.defs</a>]</td>
<td>C++14</td>
<td>Definition of &#8220;non-template function&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1510">
<td><a href="https://cplusplus.github.io/CWG/issues/1510.html">1510</a></td>
+ <td>[<a href="https://wg21.link/dcl.ref">dcl.ref</a>]</td>
<td>CD3</td>
<td>cv-qualified references via <TT>decltype</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1511">
<td><a href="https://cplusplus.github.io/CWG/issues/1511.html">1511</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD3</td>
<td><TT>const volatile</TT> variables and the one-definition rule</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1512">
<td><a href="https://cplusplus.github.io/CWG/issues/1512.html">1512</a></td>
+ <td>[<a href="https://wg21.link/expr.rel">expr.rel</a>]</td>
<td>CD3</td>
<td>Pointer comparison vs qualification conversions</td>
<td class="full" align="center">Clang 4</td>
</tr>
<tr class="open" id="1513">
<td><a href="https://cplusplus.github.io/CWG/issues/1513.html">1513</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>drafting</td>
<td><TT>initializer_list</TT> deduction failure</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1514">
<td><a href="https://cplusplus.github.io/CWG/issues/1514.html">1514</a></td>
+ <td>[<a href="https://wg21.link/class.bit">class.bit</a>]</td>
<td>C++14</td>
<td>Ambiguity between enumeration definition and zero-length bit-field</td>
<td class="full" align="center">Clang 11</td>
</tr>
<tr id="1515">
<td><a href="https://cplusplus.github.io/CWG/issues/1515.html">1515</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>CD3</td>
<td>Modulo 2<SUP><I>n</I></SUP> arithmetic for implicitly-unsigned types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1516">
<td><a href="https://cplusplus.github.io/CWG/issues/1516.html">1516</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>CD3</td>
<td>Definition of &#8220;virtual function call&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1517">
<td><a href="https://cplusplus.github.io/CWG/issues/1517.html">1517</a></td>
+ <td>[<a href="https://wg21.link/class.cdtor">class.cdtor</a>]</td>
<td>open</td>
<td>Unclear/missing description of behavior during construction/destruction</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1518">
<td><a href="https://cplusplus.github.io/CWG/issues/1518.html">1518</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD4</td>
<td>Explicit default constructors and copy-list-initialization</td>
<td class="full" align="center">Clang 4</td>
</tr>
<tr id="1519">
<td><a href="https://cplusplus.github.io/CWG/issues/1519.html">1519</a></td>
+ <td>[<a href="https://wg21.link/temp.variadic">temp.variadic</a>]</td>
<td>NAD</td>
<td>Conflicting default and variadic constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1520">
<td><a href="https://cplusplus.github.io/CWG/issues/1520.html">1520</a></td>
+ <td>[<a href="https://wg21.link/temp.alias">temp.alias</a>]</td>
<td>NAD</td>
<td>Alias template specialization vs pack expansion</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1521">
<td><a href="https://cplusplus.github.io/CWG/issues/1521.html">1521</a></td>
+ <td>[<a href="https://wg21.link/expr.type.conv">expr.type.conv</a>]</td>
<td>dup</td>
<td><TT>T{</TT><I>expr</I><TT>}</TT> with reference types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1522">
<td><a href="https://cplusplus.github.io/CWG/issues/1522.html">1522</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD3</td>
<td>Access checking for <TT>initializer_list</TT> array initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1523">
<td><a href="https://cplusplus.github.io/CWG/issues/1523.html">1523</a></td>
+ <td>[<a href="https://wg21.link/stmt.ranged">stmt.ranged</a>]</td>
<td>CD5</td>
<td>Point of declaration in range-based <TT>for</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1524">
<td><a href="https://cplusplus.github.io/CWG/issues/1524.html">1524</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>drafting</td>
<td>Incompletely-defined class template base</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1525">
<td><a href="https://cplusplus.github.io/CWG/issues/1525.html">1525</a></td>
+ <td>[<a href="https://wg21.link/expr.type.conv">expr.type.conv</a>]</td>
<td>NAD</td>
<td>Array bound inference in temporary array</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1526">
<td><a href="https://cplusplus.github.io/CWG/issues/1526.html">1526</a></td>
+ <td>[<a href="https://wg21.link/temp.dep">temp.dep</a>]</td>
<td>dup</td>
<td>Dependent-class lookup in the current instantiation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1527">
<td><a href="https://cplusplus.github.io/CWG/issues/1527.html">1527</a></td>
+ <td>[<a href="https://wg21.link/expr.assign">expr.assign</a>]</td>
<td>CD3</td>
<td>Assignment from <I>braced-init-list</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1528">
<td><a href="https://cplusplus.github.io/CWG/issues/1528.html">1528</a></td>
+ <td>[<a href="https://wg21.link/dcl.decl">dcl.decl</a>]</td>
<td>CD3</td>
<td>Repeated <I>cv-qualifier</I>s in declarators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1529">
<td><a href="https://cplusplus.github.io/CWG/issues/1529.html">1529</a></td>
+ <td>[<a href="https://wg21.link/basic.pre">basic.pre</a>]</td>
<td>drafting</td>
<td>Nomenclature for variable vs reference non-static data member</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="1530">
<td><a href="https://cplusplus.github.io/CWG/issues/1530.html">1530</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>drafting</td>
<td>Member access in out-of-lifetime objects</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1531">
<td><a href="https://cplusplus.github.io/CWG/issues/1531.html">1531</a></td>
+ <td>[<a href="https://wg21.link/intro.defs">intro.defs</a>]</td>
<td>CD3</td>
<td>Definition of &#8220;access&#8221; (verb)</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1532">
<td><a href="https://cplusplus.github.io/CWG/issues/1532.html">1532</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>CD3</td>
<td>Explicit instantiation and member templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1533">
<td><a href="https://cplusplus.github.io/CWG/issues/1533.html">1533</a></td>
+ <td>[<a href="https://wg21.link/temp.variadic">temp.variadic</a>]</td>
<td>CD3</td>
<td>Function pack expansion for member initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1534">
<td><a href="https://cplusplus.github.io/CWG/issues/1534.html">1534</a></td>
+ <td>[<a href="https://wg21.link/basic.lval">basic.lval</a>]</td>
<td>dup</td>
<td>cv-qualification of prvalue of type &#8220;array of class&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1535">
<td><a href="https://cplusplus.github.io/CWG/issues/1535.html">1535</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD3</td>
<td><TT>typeid</TT> in core constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1536">
<td><a href="https://cplusplus.github.io/CWG/issues/1536.html">1536</a></td>
+ <td>[<a href="https://wg21.link/over.ics.list">over.ics.list</a>]</td>
<td>drafting</td>
<td>Overload resolution with temporary from initializer list</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1537">
<td><a href="https://cplusplus.github.io/CWG/issues/1537.html">1537</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD3</td>
<td>Optional compile-time evaluation of constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1538">
<td><a href="https://cplusplus.github.io/CWG/issues/1538.html">1538</a></td>
+ <td>[<a href="https://wg21.link/expr.assign">expr.assign</a>]</td>
<td>CD3</td>
<td>C-style cast in <I>braced-init-list</I> assignment</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1539">
<td><a href="https://cplusplus.github.io/CWG/issues/1539.html">1539</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>CD3</td>
<td>Definition of &#8220;character type&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1540">
<td><a href="https://cplusplus.github.io/CWG/issues/1540.html">1540</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>NAD</td>
<td>Use of address constants in constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1541">
<td><a href="https://cplusplus.github.io/CWG/issues/1541.html">1541</a></td>
+ <td>[<a href="https://wg21.link/stmt.return">stmt.return</a>]</td>
<td>CD3</td>
<td><I>cv</I> <TT>void</TT> return types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1542">
<td><a href="https://cplusplus.github.io/CWG/issues/1542.html">1542</a></td>
+ <td>[<a href="https://wg21.link/expr.assign">expr.assign</a>]</td>
<td>open</td>
<td>Compound assignment of <I>braced-init-list</I></td>
<td align="center">Not resolved</td>
</tr>
<tr id="1543">
<td><a href="https://cplusplus.github.io/CWG/issues/1543.html">1543</a></td>
+ <td>[<a href="https://wg21.link/over.ics.list">over.ics.list</a>]</td>
<td>CD3</td>
<td>Implicit conversion sequence for empty initializer list</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1544">
<td><a href="https://cplusplus.github.io/CWG/issues/1544.html">1544</a></td>
+ <td>[<a href="https://wg21.link/dcl.stc">dcl.stc</a>]</td>
<td>CD3</td>
<td>Linkage of member of unnamed namespace</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1545">
<td><a href="https://cplusplus.github.io/CWG/issues/1545.html">1545</a></td>
+ <td>[<a href="https://wg21.link/temp.friend">temp.friend</a>]</td>
<td>NAD</td>
<td><TT>friend</TT> function templates defined in class templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1546">
<td><a href="https://cplusplus.github.io/CWG/issues/1546.html">1546</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>NAD</td>
<td>Errors in function template default arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1547">
<td><a href="https://cplusplus.github.io/CWG/issues/1547.html">1547</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>NAD</td>
<td><TT>typename</TT> keyword in <I>alias-declaration</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1548">
<td><a href="https://cplusplus.github.io/CWG/issues/1548.html">1548</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>open</td>
<td>Copy/move construction and conversion functions</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="1549">
<td><a href="https://cplusplus.github.io/CWG/issues/1549.html">1549</a></td>
+ <td>[<a href="https://wg21.link/over.binary">over.binary</a>]</td>
<td>open</td>
<td>Overloaded comma operator with <TT>void</TT> operand</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1550">
<td><a href="https://cplusplus.github.io/CWG/issues/1550.html">1550</a></td>
+ <td>[<a href="https://wg21.link/expr.cond">expr.cond</a>]</td>
<td>CD3</td>
<td>Parenthesized <I>throw-expression</I> operand of <I>conditional-expression</I></td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="1551">
<td><a href="https://cplusplus.github.io/CWG/issues/1551.html">1551</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>C++14</td>
<td>Wording problems in <I>using-declaration</I> specification</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1552">
<td><a href="https://cplusplus.github.io/CWG/issues/1552.html">1552</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>CD4</td>
<td><I>exception-specification</I>s and defaulted special member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1553">
<td><a href="https://cplusplus.github.io/CWG/issues/1553.html">1553</a></td>
+ <td>[<a href="https://wg21.link/expr.sizeof">expr.sizeof</a>]</td>
<td>CD3</td>
<td><TT>sizeof</TT> and xvalue bit-fields</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1554">
<td><a href="https://cplusplus.github.io/CWG/issues/1554.html">1554</a></td>
+ <td>[<a href="https://wg21.link/temp.alias">temp.alias</a>]</td>
<td>drafting</td>
<td>Access and alias templates</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1555">
<td><a href="https://cplusplus.github.io/CWG/issues/1555.html">1555</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>NAD</td>
<td>Language linkage and function type compatibility</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1556">
<td><a href="https://cplusplus.github.io/CWG/issues/1556.html">1556</a></td>
+ <td>[<a href="https://wg21.link/over.match.copy">over.match.copy</a>]</td>
<td>CD3</td>
<td>Constructors and explicit conversion functions in direct initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1557">
<td><a href="https://cplusplus.github.io/CWG/issues/1557.html">1557</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD3</td>
<td>Language linkage of converted lambda function pointer</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1558">
<td><a href="https://cplusplus.github.io/CWG/issues/1558.html">1558</a></td>
+ <td>[<a href="https://wg21.link/temp.alias">temp.alias</a>]</td>
<td>CD4</td>
<td>Unused arguments in alias template specializations</td>
<td class="full" align="center">Clang 12</td>
</tr>
<tr id="1559">
<td><a href="https://cplusplus.github.io/CWG/issues/1559.html">1559</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD3</td>
<td>String too long in initializer list of <I>new-expression</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1560">
<td><a href="https://cplusplus.github.io/CWG/issues/1560.html">1560</a></td>
+ <td>[<a href="https://wg21.link/expr.cond">expr.cond</a>]</td>
<td>CD3</td>
<td>Gratuitous lvalue-to-rvalue conversion in <I>conditional-expression</I> with <I>throw-expression</I> operand</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="1561">
<td><a href="https://cplusplus.github.io/CWG/issues/1561.html">1561</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>CD4</td>
<td>Aggregates with empty base classes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1562">
<td><a href="https://cplusplus.github.io/CWG/issues/1562.html">1562</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>C++14</td>
<td>Non-static data member initializers and union <I>ctor-initializer</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1563">
<td><a href="https://cplusplus.github.io/CWG/issues/1563.html">1563</a></td>
+ <td>[<a href="https://wg21.link/over.over">over.over</a>]</td>
<td>CD3</td>
<td>List-initialization and overloaded function disambiguation</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="1564">
<td><a href="https://cplusplus.github.io/CWG/issues/1564.html">1564</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>NAD</td>
<td>Template argument deduction from an initializer list</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1565">
<td><a href="https://cplusplus.github.io/CWG/issues/1565.html">1565</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>NAD</td>
<td>Copy elision and lifetime of <TT>initializer_list</TT> underlying array</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1566">
<td><a href="https://cplusplus.github.io/CWG/issues/1566.html">1566</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>NAD</td>
<td>Should <TT>new std::initializer_list&lt;T&gt;</TT> be ill-formed?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1567">
<td><a href="https://cplusplus.github.io/CWG/issues/1567.html">1567</a></td>
+ <td>[<a href="https://wg21.link/class.inhctor">class.inhctor</a>]</td>
<td>C++14</td>
<td>Inheriting constructors and copy/move constructors</td>
<td class="full" align="center">Clang 3.3</td>
</tr>
<tr id="1568">
<td><a href="https://cplusplus.github.io/CWG/issues/1568.html">1568</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>dup</td>
<td>Temporary lifetime extension with intervening cast</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1569">
<td><a href="https://cplusplus.github.io/CWG/issues/1569.html">1569</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>C++14</td>
<td>Deducing a function parameter pack before ellipsis</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1570">
<td><a href="https://cplusplus.github.io/CWG/issues/1570.html">1570</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.nontype">temp.arg.nontype</a>]</td>
<td>C++14</td>
<td>Address of subobject as non-type template argument</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1571">
<td><a href="https://cplusplus.github.io/CWG/issues/1571.html">1571</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD4</td>
<td>cv-qualification for indirect reference binding via conversion function</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1572">
<td><a href="https://cplusplus.github.io/CWG/issues/1572.html">1572</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD4</td>
<td>Incorrect example for rvalue reference binding via conversion function</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1573">
<td><a href="https://cplusplus.github.io/CWG/issues/1573.html">1573</a></td>
+ <td>[<a href="https://wg21.link/class.inhctor">class.inhctor</a>]</td>
<td>CD4</td>
<td>Inherited constructor characteristics</td>
<td class="full" align="center">Clang 3.9</td>
</tr>
<tr id="1574">
<td><a href="https://cplusplus.github.io/CWG/issues/1574.html">1574</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>NAD</td>
<td>Explicitly-defaulted <TT>constexpr</TT> functions in wrapper templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1575">
<td><a href="https://cplusplus.github.io/CWG/issues/1575.html">1575</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.safety">basic.stc.dynamic.safety</a>]</td>
<td>C++14</td>
<td>Incorrect definition of &#8220;strict pointer safety&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1576">
<td><a href="https://cplusplus.github.io/CWG/issues/1576.html">1576</a></td>
+ <td>[<a href="https://wg21.link/expr">expr</a>]</td>
<td>C++14</td>
<td>Discarded-value volatile xvalues</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1577">
<td><a href="https://cplusplus.github.io/CWG/issues/1577.html">1577</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial.general">temp.spec.partial.general</a>]</td>
<td>NAD</td>
<td>Unnecessary restrictions on partial specializations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1578">
<td><a href="https://cplusplus.github.io/CWG/issues/1578.html">1578</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>NAD</td>
<td>Value-initialization of aggregates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1579">
<td><a href="https://cplusplus.github.io/CWG/issues/1579.html">1579</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>C++14</td>
<td>Return by converting move constructor</td>
<td class="full" align="center">Clang 3.9</td>
</tr>
<tr class="open" id="1580">
<td><a href="https://cplusplus.github.io/CWG/issues/1580.html">1580</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>drafting</td>
<td>Default arguments in explicit instantiations</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1581">
<td><a href="https://cplusplus.github.io/CWG/issues/1581.html">1581</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD5</td>
<td>When are <TT>constexpr</TT> member functions defined?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1582">
<td><a href="https://cplusplus.github.io/CWG/issues/1582.html">1582</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>drafting</td>
<td>Template default arguments and deduction failure</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1583">
<td><a href="https://cplusplus.github.io/CWG/issues/1583.html">1583</a></td>
+ <td>[<a href="https://wg21.link/intro.execution">intro.execution</a>]</td>
<td>C++14</td>
<td>Incorrect example of unspecified behavior</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1584">
<td><a href="https://cplusplus.github.io/CWG/issues/1584.html">1584</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>drafting</td>
<td>Deducing function types from cv-qualified types</td>
<td align="center">
@@ -9335,1836 +10877,2142 @@ and <I>POD class</I></td>
</tr>
<tr id="1585">
<td><a href="https://cplusplus.github.io/CWG/issues/1585.html">1585</a></td>
+ <td>[<a href="https://wg21.link/expr.ref">expr.ref</a>]</td>
<td>NAD</td>
<td>Value category of member access of rvalue reference member</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1586">
<td><a href="https://cplusplus.github.io/CWG/issues/1586.html">1586</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>NAD</td>
<td>Naming a destructor via <TT>decltype</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1587">
<td><a href="https://cplusplus.github.io/CWG/issues/1587.html">1587</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>C++14</td>
<td><TT>constexpr</TT> initialization and nested anonymous unions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1588">
<td><a href="https://cplusplus.github.io/CWG/issues/1588.html">1588</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>CD3</td>
<td>Deducing cv-qualified <TT>auto</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1589">
<td><a href="https://cplusplus.github.io/CWG/issues/1589.html">1589</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>CD4</td>
<td>Ambiguous ranking of list-initialization sequences</td>
<td class="full" align="center">Clang 3.7 (C++11 onwards)</td>
</tr>
<tr id="1590">
<td><a href="https://cplusplus.github.io/CWG/issues/1590.html">1590</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>CD4</td>
<td>Bypassing non-copy/move constructor copying</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1591">
<td><a href="https://cplusplus.github.io/CWG/issues/1591.html">1591</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>CD4</td>
<td>Deducing array bound and element type from initializer list</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1592">
<td><a href="https://cplusplus.github.io/CWG/issues/1592.html">1592</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.template">temp.arg.template</a>]</td>
<td>C++14</td>
<td>When do template parameters match?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1593">
<td><a href="https://cplusplus.github.io/CWG/issues/1593.html">1593</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>C++14</td>
<td>&#8220;Parameter type&#8221; of special member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1594">
<td><a href="https://cplusplus.github.io/CWG/issues/1594.html">1594</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>drafting</td>
<td>Lazy declaration of special members vs overload errors</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1595">
<td><a href="https://cplusplus.github.io/CWG/issues/1595.html">1595</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>C++14</td>
<td>Constructors &#8220;involved in&#8221; subobject initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1596">
<td><a href="https://cplusplus.github.io/CWG/issues/1596.html">1596</a></td>
+ <td>[<a href="https://wg21.link/expr.rel">expr.rel</a>]</td>
<td>CD4</td>
<td>Non-array objects as <TT>array[1]</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1597">
<td><a href="https://cplusplus.github.io/CWG/issues/1597.html">1597</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>CD3</td>
<td>Misleading <TT>constexpr</TT> example</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1598">
<td><a href="https://cplusplus.github.io/CWG/issues/1598.html">1598</a></td>
+ <td>[<a href="https://wg21.link/expr.eq">expr.eq</a>]</td>
<td>C++14</td>
<td>Criterion for equality of pointers to members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1599">
<td><a href="https://cplusplus.github.io/CWG/issues/1599.html">1599</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD4</td>
<td>Lifetime of <TT>initializer_list</TT> underlying array</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1600">
<td><a href="https://cplusplus.github.io/CWG/issues/1600.html">1600</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.simple">dcl.type.simple</a>]</td>
<td>CD4</td>
<td>Erroneous reference initialization in example</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1601">
<td><a href="https://cplusplus.github.io/CWG/issues/1601.html">1601</a></td>
+ <td>[<a href="https://wg21.link/conv.prom">conv.prom</a>]</td>
<td>C++14</td>
<td>Promotion of enumeration with fixed underlying type</td>
<td class="full" align="center">Clang 10</td>
</tr>
<tr class="open" id="1602">
<td><a href="https://cplusplus.github.io/CWG/issues/1602.html">1602</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>review</td>
<td>Linkage of specialization vs linkage of template arguments</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1603">
<td><a href="https://cplusplus.github.io/CWG/issues/1603.html">1603</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD4</td>
<td>Errors resulting from giving unnamed namespaces internal linkage</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1604">
<td><a href="https://cplusplus.github.io/CWG/issues/1604.html">1604</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>C++14</td>
<td>Double temporaries in reference initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1605">
<td><a href="https://cplusplus.github.io/CWG/issues/1605.html">1605</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>CD3</td>
<td>Misleading parenthetical comment for explicit destructor call</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1606">
<td><a href="https://cplusplus.github.io/CWG/issues/1606.html">1606</a></td>
+ <td>[<a href="https://wg21.link/expr.sizeof">expr.sizeof</a>]</td>
<td>NAD</td>
<td><TT>sizeof</TT> closure class</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="1607">
<td><a href="https://cplusplus.github.io/CWG/issues/1607.html">1607</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>C++14</td>
<td>Lambdas in template parameters</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1608">
<td><a href="https://cplusplus.github.io/CWG/issues/1608.html">1608</a></td>
+ <td>[<a href="https://wg21.link/over.match.oper">over.match.oper</a>]</td>
<td>C++14</td>
<td>Operator lookup in trailing return type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1609">
<td><a href="https://cplusplus.github.io/CWG/issues/1609.html">1609</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>open</td>
<td>Default arguments and function parameter packs</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="1610">
<td><a href="https://cplusplus.github.io/CWG/issues/1610.html">1610</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.partial">temp.deduct.partial</a>]</td>
<td>drafting</td>
<td>Cv-qualification in deduction of reference to array</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1611">
<td><a href="https://cplusplus.github.io/CWG/issues/1611.html">1611</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>C++14</td>
<td>Deleted default constructor for abstract class</td>
<td class="full" align="center">Duplicate of <a href="#1658">1658</a></td>
</tr>
<tr id="1612">
<td><a href="https://cplusplus.github.io/CWG/issues/1612.html">1612</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>C++14</td>
<td>Implicit lambda capture and anonymous unions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1613">
<td><a href="https://cplusplus.github.io/CWG/issues/1613.html">1613</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>C++14</td>
<td>Constant expressions and lambda capture</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1614">
<td><a href="https://cplusplus.github.io/CWG/issues/1614.html">1614</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD4</td>
<td>Address of pure virtual function vs odr-use</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1615">
<td><a href="https://cplusplus.github.io/CWG/issues/1615.html">1615</a></td>
+ <td>[<a href="https://wg21.link/dcl.align">dcl.align</a>]</td>
<td>CD4</td>
<td>Alignment of types, variables, and members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1616">
<td><a href="https://cplusplus.github.io/CWG/issues/1616.html">1616</a></td>
+ <td>[<a href="https://wg21.link/stmt.ambig">stmt.ambig</a>]</td>
<td>CD6</td>
<td>Disambiguation parsing and template parameters</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1617">
<td><a href="https://cplusplus.github.io/CWG/issues/1617.html">1617</a></td>
+ <td>[<a href="https://wg21.link/dcl.align">dcl.align</a>]</td>
<td>open</td>
<td><TT>alignas</TT> and non-defining declarations</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1618">
<td><a href="https://cplusplus.github.io/CWG/issues/1618.html">1618</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>C++14</td>
<td>Gratuitously-unsigned underlying enum type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1619">
<td><a href="https://cplusplus.github.io/CWG/issues/1619.html">1619</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>open</td>
<td>Definition of current instantiation</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="1620">
<td><a href="https://cplusplus.github.io/CWG/issues/1620.html">1620</a></td>
+ <td>[<a href="https://wg21.link/over.literal">over.literal</a>]</td>
<td>open</td>
<td>User-defined literals and extended integer types</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1621">
<td><a href="https://cplusplus.github.io/CWG/issues/1621.html">1621</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>C++20</td>
<td>Member initializers in anonymous unions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1622">
<td><a href="https://cplusplus.github.io/CWG/issues/1622.html">1622</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>C++17</td>
<td>Empty aggregate initializer for union</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1623">
<td><a href="https://cplusplus.github.io/CWG/issues/1623.html">1623</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>drafting</td>
<td>Deleted default union constructor and member initializers</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1624">
<td><a href="https://cplusplus.github.io/CWG/issues/1624.html">1624</a></td>
+ <td>[<a href="https://wg21.link/except.ctor">except.ctor</a>]</td>
<td>NAD</td>
<td>Destruction of union members with member initializers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1625">
<td><a href="https://cplusplus.github.io/CWG/issues/1625.html">1625</a></td>
+ <td>[<a href="https://wg21.link/cpp.stringize">cpp.stringize</a>]</td>
<td>open</td>
<td>Adding spaces between tokens in stringizing</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1626">
<td><a href="https://cplusplus.github.io/CWG/issues/1626.html">1626</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>dup</td>
<td><TT>constexpr</TT> member functions in <I>brace-or-equal-initializer</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1627">
<td><a href="https://cplusplus.github.io/CWG/issues/1627.html">1627</a></td>
+ <td>[<a href="https://wg21.link/dcl.align">dcl.align</a>]</td>
<td>NAD</td>
<td>Agreement of dependent <TT>alignas</TT> specifiers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1628">
<td><a href="https://cplusplus.github.io/CWG/issues/1628.html">1628</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>open</td>
<td>Deallocation function templates</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1629">
<td><a href="https://cplusplus.github.io/CWG/issues/1629.html">1629</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>C++14</td>
<td>Can a closure class be a literal type?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1630">
<td><a href="https://cplusplus.github.io/CWG/issues/1630.html">1630</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD4</td>
<td>Multiple default constructor templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1631">
<td><a href="https://cplusplus.github.io/CWG/issues/1631.html">1631</a></td>
+ <td>[<a href="https://wg21.link/over.ics.list">over.ics.list</a>]</td>
<td>CD4</td>
<td>Incorrect overload resolution for single-element <I>initializer-list</I></td>
<td class="full" align="center">Clang 3.7</td>
</tr>
<tr id="1632">
<td><a href="https://cplusplus.github.io/CWG/issues/1632.html">1632</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>CD5</td>
<td>Lambda capture in member initializers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1633">
<td><a href="https://cplusplus.github.io/CWG/issues/1633.html">1633</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD4</td>
<td>Copy-initialization in member initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1634">
<td><a href="https://cplusplus.github.io/CWG/issues/1634.html">1634</a></td>
+ <td>[<a href="https://wg21.link/basic.stc">basic.stc</a>]</td>
<td>open</td>
<td>Temporary storage duration</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="1635">
<td><a href="https://cplusplus.github.io/CWG/issues/1635.html">1635</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>drafting</td>
<td>How similar are template default arguments to function default arguments?</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1636">
<td><a href="https://cplusplus.github.io/CWG/issues/1636.html">1636</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>CD5</td>
<td>Bits required for negative enumerator values</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1637">
<td><a href="https://cplusplus.github.io/CWG/issues/1637.html">1637</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>NAD</td>
<td>Recursion in <TT>constexpr</TT> template default constructor</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1638">
<td><a href="https://cplusplus.github.io/CWG/issues/1638.html">1638</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>CD4</td>
<td>Declaring an explicit specialization of a scoped enumeration</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="1639">
<td><a href="https://cplusplus.github.io/CWG/issues/1639.html">1639</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>CD4</td>
<td><I>exception-specification</I>s and pointer/pointer-to-member expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1640">
<td><a href="https://cplusplus.github.io/CWG/issues/1640.html">1640</a></td>
+ <td>[<a href="https://wg21.link/dcl.array">dcl.array</a>]</td>
<td>CD5</td>
<td>Array of abstract instance of class template</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1641">
<td><a href="https://cplusplus.github.io/CWG/issues/1641.html">1641</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>NAD</td>
<td>Assignment in member initializer</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1642">
<td><a href="https://cplusplus.github.io/CWG/issues/1642.html">1642</a></td>
+ <td>[<a href="https://wg21.link/expr.compound">expr.compound</a>]</td>
<td>CD7</td>
<td>Missing requirements for prvalue operands</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1643">
<td><a href="https://cplusplus.github.io/CWG/issues/1643.html">1643</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>NAD</td>
<td>Default arguments for template parameter packs</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1644">
<td><a href="https://cplusplus.github.io/CWG/issues/1644.html">1644</a></td>
+ <td>[<a href="https://wg21.link/temp.over.link">temp.over.link</a>]</td>
<td>NAD</td>
<td>Equivalent <I>exception-specification</I>s in function template declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1645">
<td><a href="https://cplusplus.github.io/CWG/issues/1645.html">1645</a></td>
+ <td>[<a href="https://wg21.link/class.inhctor">class.inhctor</a>]</td>
<td>CD4</td>
<td>Identical inheriting constructors via default arguments</td>
<td class="full" align="center">Clang 3.9</td>
</tr>
<tr id="1646">
<td><a href="https://cplusplus.github.io/CWG/issues/1646.html">1646</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>CD5</td>
<td><I>decltype-specifier</I>s, abstract classes, and deduction failure</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1647">
<td><a href="https://cplusplus.github.io/CWG/issues/1647.html">1647</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial">temp.spec.partial</a>]</td>
<td>drafting</td>
<td>Type agreement of non-type template arguments in partial specializations</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1648">
<td><a href="https://cplusplus.github.io/CWG/issues/1648.html">1648</a></td>
+ <td>[<a href="https://wg21.link/dcl.stc">dcl.stc</a>]</td>
<td>C++14</td>
<td><TT>thread_local</TT> vs block extern declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1649">
<td><a href="https://cplusplus.github.io/CWG/issues/1649.html">1649</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>C++14</td>
<td>Error in the syntax of <I>mem-initializer-list</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1650">
<td><a href="https://cplusplus.github.io/CWG/issues/1650.html">1650</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>NAD</td>
<td>Class prvalues in reference initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1651">
<td><a href="https://cplusplus.github.io/CWG/issues/1651.html">1651</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>NAD</td>
<td>Lifetime extension of temporary via reference to subobject</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1652">
<td><a href="https://cplusplus.github.io/CWG/issues/1652.html">1652</a></td>
+ <td>[<a href="https://wg21.link/expr.eq">expr.eq</a>]</td>
<td>CD4</td>
<td>Object addresses in <TT>constexpr</TT> expressions</td>
<td class="full" align="center">Clang 3.6</td>
</tr>
<tr id="1653">
<td><a href="https://cplusplus.github.io/CWG/issues/1653.html">1653</a></td>
+ <td>[<a href="https://wg21.link/expr.pre.incr">expr.pre.incr</a>]</td>
<td>CD4</td>
<td>Removing deprecated increment of <TT>bool</TT></td>
<td class="full" align="center">Clang 4 (C++17 onwards)</td>
</tr>
<tr id="1654">
<td><a href="https://cplusplus.github.io/CWG/issues/1654.html">1654</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>dup</td>
<td>Literal types and <TT>constexpr</TT> defaulted constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1655">
<td><a href="https://cplusplus.github.io/CWG/issues/1655.html">1655</a></td>
+ <td>[<a href="https://wg21.link/lex.pptoken">lex.pptoken</a>]</td>
<td>open</td>
<td>Line endings in raw string literals</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1656">
<td><a href="https://cplusplus.github.io/CWG/issues/1656.html">1656</a></td>
+ <td>[<a href="https://wg21.link/lex.ccon">lex.ccon</a>]</td>
<td>CD6</td>
<td>Encoding of numerically-escaped characters</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1657">
<td><a href="https://cplusplus.github.io/CWG/issues/1657.html">1657</a></td>
+ <td>[<a href="https://wg21.link/namespace.def">namespace.def</a>]</td>
<td>CD4</td>
<td>Attributes for namespaces and enumerators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1658">
<td><a href="https://cplusplus.github.io/CWG/issues/1658.html">1658</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>C++14</td>
<td>Deleted default constructor for abstract class via destructor</td>
<td class="full" align="center">Clang 5</td>
</tr>
<tr class="open" id="1659">
<td><a href="https://cplusplus.github.io/CWG/issues/1659.html">1659</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>open</td>
<td>Initialization order of thread_local template static data members</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1660">
<td><a href="https://cplusplus.github.io/CWG/issues/1660.html">1660</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>C++14</td>
<td><I>member-declaration</I> requirements and unnamed bit-fields</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1661">
<td><a href="https://cplusplus.github.io/CWG/issues/1661.html">1661</a></td>
+ <td>[<a href="https://wg21.link/intro.multithread">intro.multithread</a>]</td>
<td>NAD</td>
<td>Preservation of infinite loops</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1662">
<td><a href="https://cplusplus.github.io/CWG/issues/1662.html">1662</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>C++14</td>
<td>Capturing function parameter packs</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1663">
<td><a href="https://cplusplus.github.io/CWG/issues/1663.html">1663</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>NAD</td>
<td>Capturing an empty pack expansion</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1664">
<td><a href="https://cplusplus.github.io/CWG/issues/1664.html">1664</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>C++14</td>
<td>Argument-dependent lookup of lambdas used in default arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1665">
<td><a href="https://cplusplus.github.io/CWG/issues/1665.html">1665</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>drafting</td>
<td>Declaration matching in explicit instantiations</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1666">
<td><a href="https://cplusplus.github.io/CWG/issues/1666.html">1666</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.nontype">temp.arg.nontype</a>]</td>
<td>C++14</td>
<td>Address constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1667">
<td><a href="https://cplusplus.github.io/CWG/issues/1667.html">1667</a></td>
+ <td>[<a href="https://wg21.link/except.throw">except.throw</a>]</td>
<td>NAD</td>
<td>Function exiting via exception called by destructor during unwinding</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1668">
<td><a href="https://cplusplus.github.io/CWG/issues/1668.html">1668</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>drafting</td>
<td>Parameter type determination still not clear enough</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1669">
<td><a href="https://cplusplus.github.io/CWG/issues/1669.html">1669</a></td>
+ <td>[<a href="https://wg21.link/basic.start.main">basic.start.main</a>]</td>
<td>C++14</td>
<td><TT>auto</TT> return type for <TT>main</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1670">
<td><a href="https://cplusplus.github.io/CWG/issues/1670.html">1670</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>review</td>
<td><TT>auto</TT> as <I>conversion-type-id</I></td>
<td align="center">Not resolved</td>
</tr>
<tr id="1671">
<td><a href="https://cplusplus.github.io/CWG/issues/1671.html">1671</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>NAD</td>
<td>Unclear rules for deduction with cv-qualification</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1672">
<td><a href="https://cplusplus.github.io/CWG/issues/1672.html">1672</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD4</td>
<td>Layout compatibility with multiple empty bases</td>
<td class="full" align="center">Clang 7</td>
</tr>
<tr id="1673">
<td><a href="https://cplusplus.github.io/CWG/issues/1673.html">1673</a></td>
+ <td>[<a href="https://wg21.link/over.best.ics">over.best.ics</a>]</td>
<td>C++14</td>
<td>Clarifying overload resolution for the second step of copy-initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1674">
<td><a href="https://cplusplus.github.io/CWG/issues/1674.html">1674</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>C++14</td>
<td>Return type deduction for address of function</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1675">
<td><a href="https://cplusplus.github.io/CWG/issues/1675.html">1675</a></td>
+ <td>[<a href="https://wg21.link/implimits">implimits</a>]</td>
<td>NAD</td>
<td>Size limit for automatic array object</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1676">
<td><a href="https://cplusplus.github.io/CWG/issues/1676.html">1676</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.allocation">basic.stc.dynamic.allocation</a>]</td>
<td>drafting</td>
<td><TT>auto</TT> return type for allocation and deallocation functions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1677">
<td><a href="https://cplusplus.github.io/CWG/issues/1677.html">1677</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>C++17</td>
<td>Constant initialization via aggregate initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1678">
<td><a href="https://cplusplus.github.io/CWG/issues/1678.html">1678</a></td>
+ <td>[<a href="https://wg21.link/expr.sizeof">expr.sizeof</a>]</td>
<td>NAD</td>
<td>Naming the type of an array of runtime bound</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1679">
<td><a href="https://cplusplus.github.io/CWG/issues/1679.html">1679</a></td>
+ <td>[<a href="https://wg21.link/stmt.ranged">stmt.ranged</a>]</td>
<td>NAD</td>
<td>Range-based <TT>for</TT> and array of runtime bound</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1680">
<td><a href="https://cplusplus.github.io/CWG/issues/1680.html">1680</a></td>
+ <td>[<a href="https://wg21.link/stmt.ranged">stmt.ranged</a>]</td>
<td>drafting</td>
<td>Including <TT>&lt;initializer_list&gt;</TT> for range-based <TT>for</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr id="1681">
<td><a href="https://cplusplus.github.io/CWG/issues/1681.html">1681</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>C++14</td>
<td><I>init-capture</I>s and nested lambdas</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1682">
<td><a href="https://cplusplus.github.io/CWG/issues/1682.html">1682</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.allocation">basic.stc.dynamic.allocation</a>]</td>
<td>open</td>
<td>Overly-restrictive rules on function templates as allocation functions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1683">
<td><a href="https://cplusplus.github.io/CWG/issues/1683.html">1683</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD4</td>
<td>Incorrect example after <TT>constexpr</TT> changes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1684">
<td><a href="https://cplusplus.github.io/CWG/issues/1684.html">1684</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>C++14</td>
<td>Static <TT>constexpr</TT> member functions for non-literal classes</td>
<td class="full" align="center">Clang 3.6</td>
</tr>
<tr id="1685">
<td><a href="https://cplusplus.github.io/CWG/issues/1685.html">1685</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.noexcept">expr.unary.noexcept</a>]</td>
<td>NAD</td>
<td>Value category of <TT>noexcept</TT> expression</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1686">
<td><a href="https://cplusplus.github.io/CWG/issues/1686.html">1686</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD4</td>
<td>Which variables are &#8220;explicitly declared <TT>const</TT>?&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1687">
<td><a href="https://cplusplus.github.io/CWG/issues/1687.html">1687</a></td>
+ <td>[<a href="https://wg21.link/over.match.oper">over.match.oper</a>]</td>
<td>C++14</td>
<td>Conversions of operands of built-in operators</td>
<td class="full" align="center">Clang 7</td>
</tr>
<tr id="1688">
<td><a href="https://cplusplus.github.io/CWG/issues/1688.html">1688</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>NAD</td>
<td>Volatile <TT>constexpr</TT> variables</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1689">
<td><a href="https://cplusplus.github.io/CWG/issues/1689.html">1689</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.grammar">dcl.attr.grammar</a>]</td>
<td>C++14</td>
<td>Syntactic nonterminal for operand of <TT>alignas</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1690">
<td><a href="https://cplusplus.github.io/CWG/issues/1690.html">1690</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>C++14</td>
<td>Associated namespace for local type</td>
<td class="full" align="center">Clang 9</td>
</tr>
<tr id="1691">
<td><a href="https://cplusplus.github.io/CWG/issues/1691.html">1691</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>C++14</td>
<td>Argument-dependent lookup and opaque enumerations</td>
<td class="full" align="center">Clang 9</td>
</tr>
<tr id="1692">
<td><a href="https://cplusplus.github.io/CWG/issues/1692.html">1692</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>C++14</td>
<td>Associated namespaces of doubly-nested classes</td>
<td class="full" align="center">Clang 9</td>
</tr>
<tr id="1693">
<td><a href="https://cplusplus.github.io/CWG/issues/1693.html">1693</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>C++14</td>
<td>Superfluous semicolons in class definitions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1694">
<td><a href="https://cplusplus.github.io/CWG/issues/1694.html">1694</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD4</td>
<td>Restriction on reference to temporary as a constant expression</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1695">
<td><a href="https://cplusplus.github.io/CWG/issues/1695.html">1695</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>NAD</td>
<td>Lifetime extension via <I>init-capture</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1696">
<td><a href="https://cplusplus.github.io/CWG/issues/1696.html">1696</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>CD4</td>
<td>Temporary lifetime and non-static data member initializers</td>
<td class="full" align="center">Clang 7</td>
</tr>
<tr id="1697">
<td><a href="https://cplusplus.github.io/CWG/issues/1697.html">1697</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>CD4</td>
<td>Lifetime extension and copy elision</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1698">
<td><a href="https://cplusplus.github.io/CWG/issues/1698.html">1698</a></td>
+ <td>[<a href="https://wg21.link/lex.phases">lex.phases</a>]</td>
<td>CD7</td>
<td>Files ending in <TT>\</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1699">
<td><a href="https://cplusplus.github.io/CWG/issues/1699.html">1699</a></td>
+ <td>[<a href="https://wg21.link/class.friend">class.friend</a>]</td>
<td>open</td>
<td>Does befriending a class befriend its friends?</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1700">
<td><a href="https://cplusplus.github.io/CWG/issues/1700.html">1700</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>NAD</td>
<td>Does the special rvalue-reference deduction apply to alias templates?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1701">
<td><a href="https://cplusplus.github.io/CWG/issues/1701.html">1701</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>open</td>
<td>Array vs sequence in object representation</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="1702">
<td><a href="https://cplusplus.github.io/CWG/issues/1702.html">1702</a></td>
+ <td>[<a href="https://wg21.link/class.union">class.union</a>]</td>
<td>drafting</td>
<td>Rephrasing the definition of &#8220;anonymous union&#8221;</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1703">
<td><a href="https://cplusplus.github.io/CWG/issues/1703.html">1703</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>NAD</td>
<td>Language linkage of names of functions with internal linkage</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1704">
<td><a href="https://cplusplus.github.io/CWG/issues/1704.html">1704</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>CD5</td>
<td>Type checking in explicit instantiation of variable templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1705">
<td><a href="https://cplusplus.github.io/CWG/issues/1705.html">1705</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.partial">temp.deduct.partial</a>]</td>
<td>CD4</td>
<td>Unclear specification of &#8220;more specialized&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1706">
<td><a href="https://cplusplus.github.io/CWG/issues/1706.html">1706</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.grammar">dcl.attr.grammar</a>]</td>
<td>drafting</td>
<td><TT>alignas</TT> pack expansion syntax</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1707">
<td><a href="https://cplusplus.github.io/CWG/issues/1707.html">1707</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.elab">dcl.type.elab</a>]</td>
<td>C++14</td>
<td><TT>template</TT> in <I>elaborated-type-specifier</I> without <I>nested-name-specifier</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1708">
<td><a href="https://cplusplus.github.io/CWG/issues/1708.html">1708</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>CD4</td>
<td>overly-strict requirements for names with C language linkage</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1709">
<td><a href="https://cplusplus.github.io/CWG/issues/1709.html">1709</a></td>
+ <td>[<a href="https://wg21.link/cpp.stringize">cpp.stringize</a>]</td>
<td>open</td>
<td>Stringizing raw string literals containing newline</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1710">
<td><a href="https://cplusplus.github.io/CWG/issues/1710.html">1710</a></td>
+ <td>[<a href="https://wg21.link/class.derived">class.derived</a>]</td>
<td>C++17</td>
<td>Missing <TT>template</TT> keyword in <I>class-or-decltype</I></td>
<td class="none" align="center">No</td>
</tr>
<tr id="1711">
<td><a href="https://cplusplus.github.io/CWG/issues/1711.html">1711</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial">temp.spec.partial</a>]</td>
<td>CD6</td>
<td>Missing specification of variable template partial specializations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1712">
<td><a href="https://cplusplus.github.io/CWG/issues/1712.html">1712</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>CD4</td>
<td><TT>constexpr</TT> variable template declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1713">
<td><a href="https://cplusplus.github.io/CWG/issues/1713.html">1713</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>dup</td>
<td>Linkage of variable template specializations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1714">
<td><a href="https://cplusplus.github.io/CWG/issues/1714.html">1714</a></td>
+ <td>[<a href="https://wg21.link/class.local">class.local</a>]</td>
<td>NAD</td>
<td>odr-use of <TT>this</TT> from a local class</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1715">
<td><a href="https://cplusplus.github.io/CWG/issues/1715.html">1715</a></td>
+ <td>[<a href="https://wg21.link/class.inhctor">class.inhctor</a>]</td>
<td>CD4</td>
<td>Access and inherited constructor templates</td>
<td class="full" align="center">Clang 3.9</td>
</tr>
<tr id="1716">
<td><a href="https://cplusplus.github.io/CWG/issues/1716.html">1716</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>C++14</td>
<td>When are default arguments evaluated?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1717">
<td><a href="https://cplusplus.github.io/CWG/issues/1717.html">1717</a></td>
+ <td>[<a href="https://wg21.link/lex.icon">lex.icon</a>]</td>
<td>C++14</td>
<td>Missing specification of type of binary literal</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1718">
<td><a href="https://cplusplus.github.io/CWG/issues/1718.html">1718</a></td>
+ <td>[<a href="https://wg21.link/cpp.replace">cpp.replace</a>]</td>
<td>open</td>
<td>Macro invocation spanning end-of-file</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1719">
<td><a href="https://cplusplus.github.io/CWG/issues/1719.html">1719</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD4</td>
<td>Layout compatibility and cv-qualification revisited</td>
<td class="full" align="center">Clang 19</td>
</tr>
<tr id="1720">
<td><a href="https://cplusplus.github.io/CWG/issues/1720.html">1720</a></td>
+ <td>[<a href="https://wg21.link/cpp.include">cpp.include</a>]</td>
<td>NAD</td>
<td>Macro invocation in <TT>#include</TT> directive</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1721">
<td><a href="https://cplusplus.github.io/CWG/issues/1721.html">1721</a></td>
+ <td>[<a href="https://wg21.link/class.static.data">class.static.data</a>]</td>
<td>review</td>
<td>Diagnosing ODR violations for static data members</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1722">
<td><a href="https://cplusplus.github.io/CWG/issues/1722.html">1722</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD4</td>
<td>Should lambda to function pointer conversion function be <TT>noexcept</TT>?</td>
<td class="full" align="center">Clang 9</td>
</tr>
<tr class="open" id="1723">
<td><a href="https://cplusplus.github.io/CWG/issues/1723.html">1723</a></td>
+ <td>[<a href="https://wg21.link/lex.ext">lex.ext</a>]</td>
<td>open</td>
<td>Multicharacter user-defined character literals</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1724">
<td><a href="https://cplusplus.github.io/CWG/issues/1724.html">1724</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>CD6</td>
<td>Unclear rules for deduction failure</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1725">
<td><a href="https://cplusplus.github.io/CWG/issues/1725.html">1725</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>NAD</td>
<td>Trailing return type with nested function declarator</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1726">
<td><a href="https://cplusplus.github.io/CWG/issues/1726.html">1726</a></td>
+ <td>[<a href="https://wg21.link/class.conv.fct">class.conv.fct</a>]</td>
<td>CD6</td>
<td>Declarator operators and conversion function</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1727">
<td><a href="https://cplusplus.github.io/CWG/issues/1727.html">1727</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>NAD</td>
<td>Type of a specialization of a variable template</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1728">
<td><a href="https://cplusplus.github.io/CWG/issues/1728.html">1728</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>CD5</td>
<td>Type of an explicit instantiation of a variable template</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1729">
<td><a href="https://cplusplus.github.io/CWG/issues/1729.html">1729</a></td>
+ <td>[<a href="https://wg21.link/temp.decls">temp.decls</a>]</td>
<td>CD6</td>
<td>Matching declarations and definitions of variable templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1730">
<td><a href="https://cplusplus.github.io/CWG/issues/1730.html">1730</a></td>
+ <td>[<a href="https://wg21.link/temp.decls">temp.decls</a>]</td>
<td>drafting</td>
<td>Can a variable template have an unnamed type?</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1731">
<td><a href="https://cplusplus.github.io/CWG/issues/1731.html">1731</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>NAD</td>
<td><TT>is_trivially_</TT><I>X</I> and definitions of special member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1732">
<td><a href="https://cplusplus.github.io/CWG/issues/1732.html">1732</a></td>
+ <td>[<a href="https://wg21.link/stmt.select">stmt.select</a>]</td>
<td>C++14</td>
<td>Defining types in <I>condition</I>s and range-based <TT>for</TT> statements</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1733">
<td><a href="https://cplusplus.github.io/CWG/issues/1733.html">1733</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>CD6</td>
<td>Return type and value for <TT>operator=</TT> with <I>ref-qualifier</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1734">
<td><a href="https://cplusplus.github.io/CWG/issues/1734.html">1734</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>CD4</td>
<td>Nontrivial deleted copy functions</td>
<td class="none" align="center">No</td>
</tr>
<tr class="open" id="1735">
<td><a href="https://cplusplus.github.io/CWG/issues/1735.html">1735</a></td>
+ <td>[<a href="https://wg21.link/lex.ext">lex.ext</a>]</td>
<td>open</td>
<td>Out-of-range literals in <I>user-defined-literal</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1736">
<td><a href="https://cplusplus.github.io/CWG/issues/1736.html">1736</a></td>
+ <td>[<a href="https://wg21.link/class.inhctor">class.inhctor</a>]</td>
<td>CD4</td>
<td>Inheriting constructor templates in a local class</td>
<td class="full" align="center">Clang 3.9</td>
</tr>
<tr id="1737">
<td><a href="https://cplusplus.github.io/CWG/issues/1737.html">1737</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>C++14</td>
<td>Type dependence of call to a member of the current instantiation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1738">
<td><a href="https://cplusplus.github.io/CWG/issues/1738.html">1738</a></td>
+ <td>[<a href="https://wg21.link/class.inhctor">class.inhctor</a>]</td>
<td>C++14</td>
<td>Explicit instantiation/specialization of inheriting constructor templates</td>
<td class="na" align="center">Superseded by <a href="https://wg21.link/P0136R1">P0136R1</a></td>
</tr>
<tr id="1739">
<td><a href="https://cplusplus.github.io/CWG/issues/1739.html">1739</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>C++14</td>
<td>Conversion of floating point to enumeration</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1740">
<td><a href="https://cplusplus.github.io/CWG/issues/1740.html">1740</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>C++14</td>
<td>Disambiguation of <TT>noexcept</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1741">
<td><a href="https://cplusplus.github.io/CWG/issues/1741.html">1741</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>C++14</td>
<td>odr-use of class object in lvalue-to-rvalue conversion</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1742">
<td><a href="https://cplusplus.github.io/CWG/issues/1742.html">1742</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>CD5</td>
<td><I>using-declaration</I>s and scoped enumerators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1743">
<td><a href="https://cplusplus.github.io/CWG/issues/1743.html">1743</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>NAD</td>
<td><I>init-capture</I>s in nested lambdas</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1744">
<td><a href="https://cplusplus.github.io/CWG/issues/1744.html">1744</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>CD4</td>
<td>Unordered initialization for variable template specializations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1745">
<td><a href="https://cplusplus.github.io/CWG/issues/1745.html">1745</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>NAD</td>
<td><TT>thread_local constexpr</TT> variable</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1746">
<td><a href="https://cplusplus.github.io/CWG/issues/1746.html">1746</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>C++14</td>
<td>Are volatile scalar types trivially copyable?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1747">
<td><a href="https://cplusplus.github.io/CWG/issues/1747.html">1747</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>C++14</td>
<td>Constant initialization of reference to function</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1748">
<td><a href="https://cplusplus.github.io/CWG/issues/1748.html">1748</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD4</td>
<td>Placement new with a null pointer</td>
<td class="full" align="center">Clang 3.7</td>
</tr>
<tr id="1749">
<td><a href="https://cplusplus.github.io/CWG/issues/1749.html">1749</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>NAD</td>
<td>Confusing definition for constant initializer</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1750">
<td><a href="https://cplusplus.github.io/CWG/issues/1750.html">1750</a></td>
+ <td>[<a href="https://wg21.link/over.match.copy">over.match.copy</a>]</td>
<td>CD4</td>
<td>&#8220;Argument&#8221; vs &#8220;parameter&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1751">
<td><a href="https://cplusplus.github.io/CWG/issues/1751.html">1751</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>CD4</td>
<td>Non-trivial operations vs non-trivial initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1752">
<td><a href="https://cplusplus.github.io/CWG/issues/1752.html">1752</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>CD4</td>
<td>Right-recursion in <I>mem-initializer-list</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1753">
<td><a href="https://cplusplus.github.io/CWG/issues/1753.html">1753</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.qual">basic.lookup.qual</a>]</td>
<td>CD4</td>
<td><I>decltype-specifier</I> in <I>nested-name-specifier</I> of destructor</td>
<td class="full" align="center">Clang 11</td>
</tr>
<tr id="1754">
<td><a href="https://cplusplus.github.io/CWG/issues/1754.html">1754</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial">temp.spec.partial</a>]</td>
<td>NAD</td>
<td>Declaration of partial specialization of static data member template</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1755">
<td><a href="https://cplusplus.github.io/CWG/issues/1755.html">1755</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial.member">temp.spec.partial.member</a>]</td>
<td>drafting</td>
<td>Out-of-class partial specializations of member templates</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1756">
<td><a href="https://cplusplus.github.io/CWG/issues/1756.html">1756</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD4</td>
<td>Direct-list-initialization of a non-class object</td>
<td class="full" align="center">Clang 3.7</td>
</tr>
<tr id="1757">
<td><a href="https://cplusplus.github.io/CWG/issues/1757.html">1757</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD4</td>
<td>Const integral subobjects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1758">
<td><a href="https://cplusplus.github.io/CWG/issues/1758.html">1758</a></td>
+ <td>[<a href="https://wg21.link/over.match.list">over.match.list</a>]</td>
<td>CD4</td>
<td>Explicit conversion in copy/move list initialization</td>
<td class="full" align="center">Clang 3.7</td>
</tr>
<tr id="1759">
<td><a href="https://cplusplus.github.io/CWG/issues/1759.html">1759</a></td>
+ <td>[<a href="https://wg21.link/lex.string">lex.string</a>]</td>
<td>C++14</td>
<td>UTF-8 code units in plain <TT>char</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1760">
<td><a href="https://cplusplus.github.io/CWG/issues/1760.html">1760</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>C++14</td>
<td>Access of member corresponding to <I>init-capture</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1761">
<td><a href="https://cplusplus.github.io/CWG/issues/1761.html">1761</a></td>
+ <td>[<a href="https://wg21.link/dcl.array">dcl.array</a>]</td>
<td>NAD</td>
<td>Runtime check on size of automatic array</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1762">
<td><a href="https://cplusplus.github.io/CWG/issues/1762.html">1762</a></td>
+ <td>[<a href="https://wg21.link/over.literal">over.literal</a>]</td>
<td>C++14</td>
<td>Reserved identifier used in <I>literal-operator-id</I> example</td>
<td class="full" align="center">Clang 14</td>
</tr>
<tr class="open" id="1763">
<td><a href="https://cplusplus.github.io/CWG/issues/1763.html">1763</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>open</td>
<td>Length mismatch in template type deduction</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1764">
<td><a href="https://cplusplus.github.io/CWG/issues/1764.html">1764</a></td>
+ <td>[<a href="https://wg21.link/class.member.lookup">class.member.lookup</a>]</td>
<td>C++14</td>
<td>Hiding of function from using-declaration by signature</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1765">
<td><a href="https://cplusplus.github.io/CWG/issues/1765.html">1765</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>C++14</td>
<td>Overflow of enumeration used as enumerator value</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1766">
<td><a href="https://cplusplus.github.io/CWG/issues/1766.html">1766</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>CD4</td>
<td>Values outside the range of the values of an enumeration</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1767">
<td><a href="https://cplusplus.github.io/CWG/issues/1767.html">1767</a></td>
+ <td>[<a href="https://wg21.link/stmt.switch">stmt.switch</a>]</td>
<td>C++14</td>
<td>Scoped enumeration in a <TT>switch</TT> statement</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1768">
<td><a href="https://cplusplus.github.io/CWG/issues/1768.html">1768</a></td>
+ <td>[<a href="https://wg21.link/dcl.array">dcl.array</a>]</td>
<td>NAD</td>
<td>Zero-element array of runtime bound</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1769">
<td><a href="https://cplusplus.github.io/CWG/issues/1769.html">1769</a></td>
+ <td>[<a href="https://wg21.link/except.handle">except.handle</a>]</td>
<td>C++14</td>
<td>Catching a base class of the exception object</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1770">
<td><a href="https://cplusplus.github.io/CWG/issues/1770.html">1770</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>C++14</td>
<td>Type matching of non-type template parameters and arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1771">
<td><a href="https://cplusplus.github.io/CWG/issues/1771.html">1771</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.qual">basic.lookup.qual</a>]</td>
<td>CD6</td>
<td>Restricted lookup in <I>nested-name-specifier</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1772">
<td><a href="https://cplusplus.github.io/CWG/issues/1772.html">1772</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>C++14</td>
<td><TT>__func__</TT> in a lambda body</td>
<td class="full" align="center">Clang 14</td>
</tr>
<tr id="1773">
<td><a href="https://cplusplus.github.io/CWG/issues/1773.html">1773</a></td>
+ <td>[<a href="https://wg21.link/conv.lval">conv.lval</a>]</td>
<td>C++14</td>
<td>Out-of-lifetime lvalue-to-rvalue conversion</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1774">
<td><a href="https://cplusplus.github.io/CWG/issues/1774.html">1774</a></td>
+ <td>[<a href="https://wg21.link/except.ctor">except.ctor</a>]</td>
<td>CD4</td>
<td>Discrepancy between subobject destruction and stack unwinding</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1775">
<td><a href="https://cplusplus.github.io/CWG/issues/1775.html">1775</a></td>
+ <td>[<a href="https://wg21.link/lex.phases">lex.phases</a>]</td>
<td>C++14</td>
<td>Undefined behavior of line splice in raw string literal</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1776">
<td><a href="https://cplusplus.github.io/CWG/issues/1776.html">1776</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>CD4</td>
<td>Replacement of class objects containing reference members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1777">
<td><a href="https://cplusplus.github.io/CWG/issues/1777.html">1777</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>CD4</td>
<td>Empty pack expansion in <I>dynamic-exception-specification</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1778">
<td><a href="https://cplusplus.github.io/CWG/issues/1778.html">1778</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>C++14</td>
<td><I>exception-specification</I> in explicitly-defaulted functions</td>
<td class="full" align="center">Clang 9</td>
</tr>
<tr id="1779">
<td><a href="https://cplusplus.github.io/CWG/issues/1779.html">1779</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.expr">temp.dep.expr</a>]</td>
<td>CD4</td>
<td>Type dependency of <TT>__func__</TT></td>
<td class="full" align="center">Clang 14</td>
</tr>
<tr id="1780">
<td><a href="https://cplusplus.github.io/CWG/issues/1780.html">1780</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD4</td>
<td>Explicit instantiation/specialization of generic lambda <TT>operator()</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1781">
<td><a href="https://cplusplus.github.io/CWG/issues/1781.html">1781</a></td>
+ <td>[<a href="https://wg21.link/over.match.conv">over.match.conv</a>]</td>
<td>CD5</td>
<td>Converting from <TT>nullptr_t</TT> to <TT>bool</TT> in overload resolution</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1782">
<td><a href="https://cplusplus.github.io/CWG/issues/1782.html">1782</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>CD4</td>
<td>Form of initialization for <TT>nullptr_t</TT> to <TT>bool</TT> conversion</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1783">
<td><a href="https://cplusplus.github.io/CWG/issues/1783.html">1783</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>NAD</td>
<td>Why are virtual destructors non-trivial?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1784">
<td><a href="https://cplusplus.github.io/CWG/issues/1784.html">1784</a></td>
+ <td>[<a href="https://wg21.link/stmt.dcl">stmt.dcl</a>]</td>
<td>C++17</td>
<td>Concurrent execution during static local initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1785">
<td><a href="https://cplusplus.github.io/CWG/issues/1785.html">1785</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>NAD</td>
<td>Conflicting diagnostic requirements for template definitions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1786">
<td><a href="https://cplusplus.github.io/CWG/issues/1786.html">1786</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>C++14</td>
<td>Effect of merging allocations on memory leakage</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1787">
<td><a href="https://cplusplus.github.io/CWG/issues/1787.html">1787</a></td>
+ <td>[<a href="https://wg21.link/conv.lval">conv.lval</a>]</td>
<td>C++14</td>
<td>Uninitialized <TT>unsigned char</TT> values</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1788">
<td><a href="https://cplusplus.github.io/CWG/issues/1788.html">1788</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>CD4</td>
<td>Sized deallocation of array of non-class type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1789">
<td><a href="https://cplusplus.github.io/CWG/issues/1789.html">1789</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>open</td>
<td>Array reference vs array decay in overload resolution</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="1790">
<td><a href="https://cplusplus.github.io/CWG/issues/1790.html">1790</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>open</td>
<td>Ellipsis following function parameter pack</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1791">
<td><a href="https://cplusplus.github.io/CWG/issues/1791.html">1791</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.general">dcl.fct.def.general</a>]</td>
<td>CD4</td>
<td>Incorrect restrictions on <I>cv-qualifier-seq</I> and <I>ref-qualifier</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1792">
<td><a href="https://cplusplus.github.io/CWG/issues/1792.html">1792</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>NAD</td>
<td>Incorrect example of explicit specialization of member enumeration</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1793">
<td><a href="https://cplusplus.github.io/CWG/issues/1793.html">1793</a></td>
+ <td>[<a href="https://wg21.link/dcl.stc">dcl.stc</a>]</td>
<td>CD4</td>
<td><TT>thread_local</TT> in explicit specializations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1794">
<td><a href="https://cplusplus.github.io/CWG/issues/1794.html">1794</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>C++17</td>
<td><TT>template</TT> keyword and alias templates</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="1795">
<td><a href="https://cplusplus.github.io/CWG/issues/1795.html">1795</a></td>
+ <td>[<a href="https://wg21.link/namespace.def">namespace.def</a>]</td>
<td>CD4</td>
<td>Disambiguating <I>original-namespace-definition</I> and <I>extension-namespace-definition</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1796">
<td><a href="https://cplusplus.github.io/CWG/issues/1796.html">1796</a></td>
+ <td>[<a href="https://wg21.link/lex.charset">lex.charset</a>]</td>
<td>CD4</td>
<td>Is all-bits-zero for null characters a meaningful requirement?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1797">
<td><a href="https://cplusplus.github.io/CWG/issues/1797.html">1797</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>CD4</td>
<td>Are all bit patterns of <TT>unsigned char</TT> distinct numbers?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1798">
<td><a href="https://cplusplus.github.io/CWG/issues/1798.html">1798</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>NAD</td>
<td><I>exception-specification</I>s of template arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1799">
<td><a href="https://cplusplus.github.io/CWG/issues/1799.html">1799</a></td>
+ <td>[<a href="https://wg21.link/dcl.stc">dcl.stc</a>]</td>
<td>CD4</td>
<td><TT>mutable</TT> and non-explicit const qualification</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1800">
<td><a href="https://cplusplus.github.io/CWG/issues/1800.html">1800</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.op">expr.unary.op</a>]</td>
<td>CD4</td>
<td>Pointer to member of nested anonymous union</td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="1801">
<td><a href="https://cplusplus.github.io/CWG/issues/1801.html">1801</a></td>
+ <td>[<a href="https://wg21.link/class.union">class.union</a>]</td>
<td>CD4</td>
<td>Kind of expression referring to member of anonymous union</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="1802">
<td><a href="https://cplusplus.github.io/CWG/issues/1802.html">1802</a></td>
+ <td>[<a href="https://wg21.link/lex.string">lex.string</a>]</td>
<td>CD4</td>
<td><TT>char16_t</TT> string literals and surrogate pairs</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="1803">
<td><a href="https://cplusplus.github.io/CWG/issues/1803.html">1803</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD5</td>
<td><I>opaque-enum-declaration</I> as <I>member-declaration</I></td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="1804">
<td><a href="https://cplusplus.github.io/CWG/issues/1804.html">1804</a></td>
+ <td>[<a href="https://wg21.link/temp.friend">temp.friend</a>]</td>
<td>CD4</td>
<td>Partial specialization and friendship</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="1805">
<td><a href="https://cplusplus.github.io/CWG/issues/1805.html">1805</a></td>
+ <td>[<a href="https://wg21.link/expr.cond">expr.cond</a>]</td>
<td>CD4</td>
<td>Conversions of array operands in <I>conditional-expression</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1806">
<td><a href="https://cplusplus.github.io/CWG/issues/1806.html">1806</a></td>
+ <td>[<a href="https://wg21.link/class.copy.assign">class.copy.assign</a>]</td>
<td>CD4</td>
<td>Virtual bases and move-assignment</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1807">
<td><a href="https://cplusplus.github.io/CWG/issues/1807.html">1807</a></td>
+ <td>[<a href="https://wg21.link/except.ctor">except.ctor</a>]</td>
<td>CD4</td>
<td>Order of destruction of array elements after an exception</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr class="open" id="1808">
<td><a href="https://cplusplus.github.io/CWG/issues/1808.html">1808</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>drafting</td>
<td>Constructor templates vs default constructors</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1809">
<td><a href="https://cplusplus.github.io/CWG/issues/1809.html">1809</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>CD4</td>
<td>Narrowing and template argument deduction</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1810">
<td><a href="https://cplusplus.github.io/CWG/issues/1810.html">1810</a></td>
+ <td>[<a href="https://wg21.link/lex.ext">lex.ext</a>]</td>
<td>CD4</td>
<td>Invalid <I>ud-suffix</I>es</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1811">
<td><a href="https://cplusplus.github.io/CWG/issues/1811.html">1811</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>CD4</td>
<td>Lookup of deallocation function in a virtual destructor definition</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1812">
<td><a href="https://cplusplus.github.io/CWG/issues/1812.html">1812</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>C++17</td>
<td>Omission of <TT>template</TT> in a <I>typename-specifier</I></td>
<td class="none" align="center">No</td>
</tr>
<tr id="1813">
<td><a href="https://cplusplus.github.io/CWG/issues/1813.html">1813</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>CD4</td>
<td>Direct vs indirect bases in standard-layout classes</td>
<td class="full" align="center">Clang 7</td>
</tr>
<tr id="1814">
<td><a href="https://cplusplus.github.io/CWG/issues/1814.html">1814</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>CD4</td>
<td>Default arguments in <I>lambda-expression</I>s</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="1815">
<td><a href="https://cplusplus.github.io/CWG/issues/1815.html">1815</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>CD4</td>
<td>Lifetime extension in aggregate initialization</td>
<td class="full" align="center">Clang 20</td>
</tr>
<tr id="1816">
<td><a href="https://cplusplus.github.io/CWG/issues/1816.html">1816</a></td>
+ <td>[<a href="https://wg21.link/conv.integral">conv.integral</a>]</td>
<td>CD4</td>
<td>Unclear specification of bit-field values</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1817">
<td><a href="https://cplusplus.github.io/CWG/issues/1817.html">1817</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>open</td>
<td>Linkage specifications and nested scopes</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1818">
<td><a href="https://cplusplus.github.io/CWG/issues/1818.html">1818</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>CD6</td>
<td>Visibility and inherited language linkage</td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="1819">
<td><a href="https://cplusplus.github.io/CWG/issues/1819.html">1819</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial.general">temp.spec.partial.general</a>]</td>
<td>CD4</td>
<td>Acceptable scopes for definition of partial specialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1820">
<td><a href="https://cplusplus.github.io/CWG/issues/1820.html">1820</a></td>
+ <td>[<a href="https://wg21.link/dcl.typedef">dcl.typedef</a>]</td>
<td>CD6</td>
<td>Qualified typedef names</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="1821">
<td><a href="https://cplusplus.github.io/CWG/issues/1821.html">1821</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD6</td>
<td>Qualified redeclarations in a class <I>member-specification</I></td>
<td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="1822">
<td><a href="https://cplusplus.github.io/CWG/issues/1822.html">1822</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>CD6</td>
<td>Lookup of parameter names in <I>lambda-expression</I>s</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="1823">
<td><a href="https://cplusplus.github.io/CWG/issues/1823.html">1823</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.spec">dcl.fct.spec</a>]</td>
<td>CD4</td>
<td>String literal uniqueness in inline functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1824">
<td><a href="https://cplusplus.github.io/CWG/issues/1824.html">1824</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>CD4</td>
<td>Completeness of return type vs point of instantiation</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="1825">
<td><a href="https://cplusplus.github.io/CWG/issues/1825.html">1825</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.partial">temp.deduct.partial</a>]</td>
<td>C++17</td>
<td>Partial ordering between variadic and non-variadic function templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1826">
<td><a href="https://cplusplus.github.io/CWG/issues/1826.html">1826</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>NAD</td>
<td><TT>const</TT> floating-point in constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1827">
<td><a href="https://cplusplus.github.io/CWG/issues/1827.html">1827</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>drafting</td>
<td>Reference binding with ambiguous conversions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1828">
<td><a href="https://cplusplus.github.io/CWG/issues/1828.html">1828</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.qual">basic.lookup.qual</a>]</td>
<td>CD6</td>
<td><I>nested-name-specifier</I> ambiguity</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1829">
<td><a href="https://cplusplus.github.io/CWG/issues/1829.html">1829</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>CD6</td>
<td>Dependent unnamed types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1830">
<td><a href="https://cplusplus.github.io/CWG/issues/1830.html">1830</a></td>
+ <td>[<a href="https://wg21.link/dcl.pre">dcl.pre</a>]</td>
<td>CD4</td>
<td>Repeated specifiers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1831">
<td><a href="https://cplusplus.github.io/CWG/issues/1831.html">1831</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>NAD</td>
<td>Explicitly vs implicitly deleted move constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1832">
<td><a href="https://cplusplus.github.io/CWG/issues/1832.html">1832</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>CD4</td>
<td>Casting to incomplete enumeration</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="1833">
<td><a href="https://cplusplus.github.io/CWG/issues/1833.html">1833</a></td>
+ <td>[<a href="https://wg21.link/class.friend">class.friend</a>]</td>
<td>NAD</td>
<td><TT>friend</TT> declarations naming implicitly-declared member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1834">
<td><a href="https://cplusplus.github.io/CWG/issues/1834.html">1834</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>CD4</td>
<td>Constant initialization binding a reference to an xvalue</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1835">
<td><a href="https://cplusplus.github.io/CWG/issues/1835.html">1835</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.classref">basic.lookup.classref</a>]</td>
<td>CD6</td>
<td>Dependent member lookup before <TT>&lt;</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1836">
<td><a href="https://cplusplus.github.io/CWG/issues/1836.html">1836</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.general">expr.prim.general</a>]</td>
<td>CD5</td>
<td>Use of class type being defined in <I>trailing-return-type</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1837">
<td><a href="https://cplusplus.github.io/CWG/issues/1837.html">1837</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.general">expr.prim.general</a>]</td>
<td>CD6</td>
<td>Use of <TT>this</TT> in <TT>friend</TT> and local class declarations</td>
<td class="full" align="center">Clang 3.3</td>
</tr>
<tr id="1838">
<td><a href="https://cplusplus.github.io/CWG/issues/1838.html">1838</a></td>
+ <td>[<a href="https://wg21.link/namespace.memdef">namespace.memdef</a>]</td>
<td>CD4</td>
<td>Definition via <I>unqualified-id</I> and <I>using-declaration</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1839">
<td><a href="https://cplusplus.github.io/CWG/issues/1839.html">1839</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD6</td>
<td>Lookup of block-scope <TT>extern</TT> declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1840">
<td><a href="https://cplusplus.github.io/CWG/issues/1840.html">1840</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>drafting</td>
<td>Non-deleted explicit specialization of deleted function template</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1841">
<td><a href="https://cplusplus.github.io/CWG/issues/1841.html">1841</a></td>
+ <td>[<a href="https://wg21.link/temp.local">temp.local</a>]</td>
<td>CD6</td>
<td><TT>&lt;</TT> following template injected-class-name</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1842">
<td><a href="https://cplusplus.github.io/CWG/issues/1842.html">1842</a></td>
+ <td>[<a href="https://wg21.link/intro.multithread">intro.multithread</a>]</td>
<td>open</td>
<td>Unevaluated operands and &#8220;carries a dependency&#8221;</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1843">
<td><a href="https://cplusplus.github.io/CWG/issues/1843.html">1843</a></td>
+ <td>[<a href="https://wg21.link/expr.cond">expr.cond</a>]</td>
<td>CD4</td>
<td>Bit-field in conditional operator with <TT>throw</TT> operand</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1844">
<td><a href="https://cplusplus.github.io/CWG/issues/1844.html">1844</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>open</td>
<td>Defining &#8220;immediate context&#8221;</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="1845">
<td><a href="https://cplusplus.github.io/CWG/issues/1845.html">1845</a></td>
+ <td>[<a href="https://wg21.link/temp.point">temp.point</a>]</td>
<td>review</td>
<td>Point of instantiation of a variable template specialization</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1846">
<td><a href="https://cplusplus.github.io/CWG/issues/1846.html">1846</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>CD4</td>
<td>Declaring explicitly-defaulted implicitly-deleted functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1847">
<td><a href="https://cplusplus.github.io/CWG/issues/1847.html">1847</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>CD4</td>
<td>Clarifying compatibility during partial ordering</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1848">
<td><a href="https://cplusplus.github.io/CWG/issues/1848.html">1848</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>CD4</td>
<td>Parenthesized constructor and destructor declarators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1849">
<td><a href="https://cplusplus.github.io/CWG/issues/1849.html">1849</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD6</td>
<td>Variable templates and the ODR</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1850">
<td><a href="https://cplusplus.github.io/CWG/issues/1850.html">1850</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>CD4</td>
<td>Differences between definition context and point of instantiation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1851">
<td><a href="https://cplusplus.github.io/CWG/issues/1851.html">1851</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD4</td>
<td><TT>decltype(auto)</TT> in <I>new-expression</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1852">
<td><a href="https://cplusplus.github.io/CWG/issues/1852.html">1852</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.simple">dcl.type.simple</a>]</td>
<td>CD4</td>
<td>Wording issues regarding <TT>decltype(auto)</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1853">
<td><a href="https://cplusplus.github.io/CWG/issues/1853.html">1853</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>dup</td>
<td>Defining &#8220;allocated storage&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1854">
<td><a href="https://cplusplus.github.io/CWG/issues/1854.html">1854</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>drafting</td>
<td>Disallowing use of implicitly-deleted functions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1855">
<td><a href="https://cplusplus.github.io/CWG/issues/1855.html">1855</a></td>
+ <td>[<a href="https://wg21.link/class.cdtor">class.cdtor</a>]</td>
<td>dup</td>
<td>Out-of-lifetime access to nonstatic data members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1856">
<td><a href="https://cplusplus.github.io/CWG/issues/1856.html">1856</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>open</td>
<td>Indirect nested classes of class templates</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1857">
<td><a href="https://cplusplus.github.io/CWG/issues/1857.html">1857</a></td>
+ <td>[<a href="https://wg21.link/expr.shift">expr.shift</a>]</td>
<td>CD5</td>
<td>Additional questions about bits</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1858">
<td><a href="https://cplusplus.github.io/CWG/issues/1858.html">1858</a></td>
+ <td>[<a href="https://wg21.link/expr.eq">expr.eq</a>]</td>
<td>CD4</td>
<td>Comparing pointers to union members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1859">
<td><a href="https://cplusplus.github.io/CWG/issues/1859.html">1859</a></td>
+ <td>[<a href="https://wg21.link/lex.string">lex.string</a>]</td>
<td>CD5</td>
<td>UTF-16 in <TT>char16_t</TT> string literals</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1860">
<td><a href="https://cplusplus.github.io/CWG/issues/1860.html">1860</a></td>
+ <td>[<a href="https://wg21.link/class.union">class.union</a>]</td>
<td>C++17</td>
<td>What is a &#8220;direct member?&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1861">
<td><a href="https://cplusplus.github.io/CWG/issues/1861.html">1861</a></td>
+ <td>[<a href="https://wg21.link/class.bit">class.bit</a>]</td>
<td>CD4</td>
<td>Values of a bit-field</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1862">
<td><a href="https://cplusplus.github.io/CWG/issues/1862.html">1862</a></td>
+ <td>[<a href="https://wg21.link/temp.friend">temp.friend</a>]</td>
<td>CD5</td>
<td>Determining &#8220;corresponding members&#8221; for friendship</td>
<td class="none" align="center">No</td>
</tr>
<tr id="1863">
<td><a href="https://cplusplus.github.io/CWG/issues/1863.html">1863</a></td>
+ <td>[<a href="https://wg21.link/except.throw">except.throw</a>]</td>
<td>CD4</td>
<td>Requirements on thrown object type to support <TT>std::current_exception()</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1864">
<td><a href="https://cplusplus.github.io/CWG/issues/1864.html">1864</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>NAD</td>
<td>List-initialization of array objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1865">
<td><a href="https://cplusplus.github.io/CWG/issues/1865.html">1865</a></td>
+ <td>[<a href="https://wg21.link/expr.add">expr.add</a>]</td>
<td>CD4</td>
<td>Pointer arithmetic and multi-level qualification conversions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1866">
<td><a href="https://cplusplus.github.io/CWG/issues/1866.html">1866</a></td>
+ <td>[<a href="https://wg21.link/except.ctor">except.ctor</a>]</td>
<td>CD4</td>
<td>Initializing variant members with non-trivial destructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1867">
<td><a href="https://cplusplus.github.io/CWG/issues/1867.html">1867</a></td>
+ <td>[<a href="https://wg21.link/dcl.ambig.res">dcl.ambig.res</a>]</td>
<td>NAD</td>
<td>Function/expression ambiguity with qualified parameter name</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1868">
<td><a href="https://cplusplus.github.io/CWG/issues/1868.html">1868</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>open</td>
<td>Meaning of &#8220;placeholder type&#8221;</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1869">
<td><a href="https://cplusplus.github.io/CWG/issues/1869.html">1869</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>NAD</td>
<td><TT>thread_local</TT> vs <I>linkage-specification</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1870">
<td><a href="https://cplusplus.github.io/CWG/issues/1870.html">1870</a></td>
+ <td>[<a href="https://wg21.link/basic.def">basic.def</a>]</td>
<td>CD4</td>
<td>Contradictory wording about definitions vs explicit specialization/instantiation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1871">
<td><a href="https://cplusplus.github.io/CWG/issues/1871.html">1871</a></td>
+ <td>[<a href="https://wg21.link/lex.ext">lex.ext</a>]</td>
<td>NAD</td>
<td>Non-identifier characters in <I>ud-suffix</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1872">
<td><a href="https://cplusplus.github.io/CWG/issues/1872.html">1872</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>CD4</td>
<td>Instantiations of <TT>constexpr</TT> templates that cannot appear in constant expressions</td>
<td class="full" align="center">Clang 9</td>
</tr>
<tr id="1873">
<td><a href="https://cplusplus.github.io/CWG/issues/1873.html">1873</a></td>
+ <td>[<a href="https://wg21.link/class.access.base">class.access.base</a>]</td>
<td>CD4</td>
<td>Protected member access from derived class friends</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1874">
<td><a href="https://cplusplus.github.io/CWG/issues/1874.html">1874</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>CD4</td>
<td>Type vs non-type template parameters with <TT>class</TT> keyword</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1875">
<td><a href="https://cplusplus.github.io/CWG/issues/1875.html">1875</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.class">basic.scope.class</a>]</td>
<td>CD4</td>
<td>Reordering declarations in class scope</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1876">
<td><a href="https://cplusplus.github.io/CWG/issues/1876.html">1876</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>NAD</td>
<td>Preventing explicit specialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1877">
<td><a href="https://cplusplus.github.io/CWG/issues/1877.html">1877</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>CD4</td>
<td>Return type deduction from <TT>return</TT> with no operand</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1878">
<td><a href="https://cplusplus.github.io/CWG/issues/1878.html">1878</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>CD4</td>
<td><TT>operator auto</TT> template</td>
<td class="full" align="center">Clang 18</td>
</tr>
<tr id="1879">
<td><a href="https://cplusplus.github.io/CWG/issues/1879.html">1879</a></td>
+ <td>[<a href="https://wg21.link/basic.align">basic.align</a>]</td>
<td>NAD</td>
<td>Inadequate definition of alignment requirement</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1880">
<td><a href="https://cplusplus.github.io/CWG/issues/1880.html">1880</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>CD4</td>
<td>When are parameter objects destroyed?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1881">
<td><a href="https://cplusplus.github.io/CWG/issues/1881.html">1881</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>CD4</td>
<td>Standard-layout classes and unnamed bit-fields</td>
<td class="full" align="center">Clang 7</td>
</tr>
<tr id="1882">
<td><a href="https://cplusplus.github.io/CWG/issues/1882.html">1882</a></td>
+ <td>[<a href="https://wg21.link/global.names">global.names</a>]</td>
<td>CD4</td>
<td>Reserved names without library use</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1883">
<td><a href="https://cplusplus.github.io/CWG/issues/1883.html">1883</a></td>
+ <td>[<a href="https://wg21.link/class.protected">class.protected</a>]</td>
<td>review</td>
<td>Protected access to constructors in <I>mem-initializer</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1884">
<td><a href="https://cplusplus.github.io/CWG/issues/1884.html">1884</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD6</td>
<td>Unclear requirements for same-named external-linkage entities</td>
<td class="partial" align="center">Partial</td>
</tr>
<tr id="1885">
<td><a href="https://cplusplus.github.io/CWG/issues/1885.html">1885</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>CD4</td>
<td>Return value of a function is underspecified</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1886">
<td><a href="https://cplusplus.github.io/CWG/issues/1886.html">1886</a></td>
+ <td>[<a href="https://wg21.link/basic.start.main">basic.start.main</a>]</td>
<td>CD4</td>
<td>Language linkage for <TT>main()</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1887">
<td><a href="https://cplusplus.github.io/CWG/issues/1887.html">1887</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>CD4</td>
<td>Problems with <TT>::</TT> as <I>nested-name-specifier</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1888">
<td><a href="https://cplusplus.github.io/CWG/issues/1888.html">1888</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>CD4</td>
<td>Implicitly-declared default constructors and <TT>explicit</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1889">
<td><a href="https://cplusplus.github.io/CWG/issues/1889.html">1889</a></td>
+ <td>[<a href="https://wg21.link/cpp.pragma">cpp.pragma</a>]</td>
<td>open</td>
<td>Unclear effect of <TT>#pragma</TT> on conformance</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="1890">
<td><a href="https://cplusplus.github.io/CWG/issues/1890.html">1890</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>drafting</td>
<td>Member type depending on definition of member function</td>
<td align="center">
@@ -11175,2670 +13023,3115 @@ and <I>POD class</I></td>
</tr>
<tr id="1891">
<td><a href="https://cplusplus.github.io/CWG/issues/1891.html">1891</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD4</td>
<td>Move constructor/assignment for closure class</td>
<td class="full" align="center">Clang 4</td>
</tr>
<tr id="1892">
<td><a href="https://cplusplus.github.io/CWG/issues/1892.html">1892</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>CD4</td>
<td>Use of <TT>auto</TT> in function type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1893">
<td><a href="https://cplusplus.github.io/CWG/issues/1893.html">1893</a></td>
+ <td>[<a href="https://wg21.link/expr.type.conv">expr.type.conv</a>]</td>
<td>CD5</td>
<td>Function-style cast with <I>braced-init-list</I>s and empty pack expansions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1894">
<td><a href="https://cplusplus.github.io/CWG/issues/1894.html">1894</a></td>
+ <td>[<a href="https://wg21.link/dcl.typedef">dcl.typedef</a>]</td>
<td>CD6</td>
<td><I>typedef-name</I>s and <I>using-declaration</I>s</td>
<td class="full" align="center">Clang 3.8</td>
</tr>
<tr id="1895">
<td><a href="https://cplusplus.github.io/CWG/issues/1895.html">1895</a></td>
+ <td>[<a href="https://wg21.link/expr.cond">expr.cond</a>]</td>
<td>CD4</td>
<td>Deleted conversions in conditional operator operands</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1896">
<td><a href="https://cplusplus.github.io/CWG/issues/1896.html">1896</a></td>
+ <td>[<a href="https://wg21.link/temp.alias">temp.alias</a>]</td>
<td>CD6</td>
<td>Repeated alias templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1897">
<td><a href="https://cplusplus.github.io/CWG/issues/1897.html">1897</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>review</td>
<td>ODR vs alternative tokens</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1898">
<td><a href="https://cplusplus.github.io/CWG/issues/1898.html">1898</a></td>
+ <td>[<a href="https://wg21.link/over.dcl">over.dcl</a>]</td>
<td>CD6</td>
<td>Use of &#8220;equivalent&#8221; in overload resolution</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="1899">
<td><a href="https://cplusplus.github.io/CWG/issues/1899.html">1899</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.constexpr">temp.dep.constexpr</a>]</td>
<td>CD4</td>
<td>Value-dependent constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1900">
<td><a href="https://cplusplus.github.io/CWG/issues/1900.html">1900</a></td>
+ <td>[<a href="https://wg21.link/dcl.meaning">dcl.meaning</a>]</td>
<td>CD6</td>
<td>Do <TT>friend</TT> declarations count as &#8220;previous declarations&#8221;?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="1901">
<td><a href="https://cplusplus.github.io/CWG/issues/1901.html">1901</a></td>
+ <td>[<a href="https://wg21.link/lex.token">lex.token</a>]</td>
<td>open</td>
<td><I>punctuator</I> referenced but not defined</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1902">
<td><a href="https://cplusplus.github.io/CWG/issues/1902.html">1902</a></td>
+ <td>[<a href="https://wg21.link/over.best.ics">over.best.ics</a>]</td>
<td>CD4</td>
<td>What makes a conversion &#8220;otherwise ill-formed&#8221;?</td>
<td class="full" align="center">Clang 3.7</td>
</tr>
<tr id="1903">
<td><a href="https://cplusplus.github.io/CWG/issues/1903.html">1903</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>CD4</td>
<td>What declarations are introduced by a non-member <I>using-declaration</I>?</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="1904">
<td><a href="https://cplusplus.github.io/CWG/issues/1904.html">1904</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>NAD</td>
<td>Default template arguments for members of class templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1905">
<td><a href="https://cplusplus.github.io/CWG/issues/1905.html">1905</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>NAD</td>
<td>Dependent types and injected-class-names</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1906">
<td><a href="https://cplusplus.github.io/CWG/issues/1906.html">1906</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.unqual">basic.lookup.unqual</a>]</td>
<td>NAD</td>
<td>Name lookup in member <TT>friend</TT> declaration</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1907">
<td><a href="https://cplusplus.github.io/CWG/issues/1907.html">1907</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>CD6</td>
<td><I>using-declaration</I>s and default arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1908">
<td><a href="https://cplusplus.github.io/CWG/issues/1908.html">1908</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.classref">basic.lookup.classref</a>]</td>
<td>CD6</td>
<td>Dual destructor lookup and <I>template-id</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1909">
<td><a href="https://cplusplus.github.io/CWG/issues/1909.html">1909</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD4</td>
<td>Member class template with the same name as the class</td>
<td class="full" align="center">Clang 3.7</td>
</tr>
<tr id="1910">
<td><a href="https://cplusplus.github.io/CWG/issues/1910.html">1910</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.allocation">basic.stc.dynamic.allocation</a>]</td>
<td>CD5</td>
<td>&#8220;Shall&#8221; requirement applied to runtime behavior</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1911">
<td><a href="https://cplusplus.github.io/CWG/issues/1911.html">1911</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>CD4</td>
<td><TT>constexpr</TT> constructor with non-literal base class</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1912">
<td><a href="https://cplusplus.github.io/CWG/issues/1912.html">1912</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>CD5</td>
<td><I>exception-specification</I> of defaulted function</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1913">
<td><a href="https://cplusplus.github.io/CWG/issues/1913.html">1913</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>CD5</td>
<td><TT>decltype((x))</TT> in <I>lambda-expression</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1914">
<td><a href="https://cplusplus.github.io/CWG/issues/1914.html">1914</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr">dcl.attr</a>]</td>
<td>extension</td>
<td>Duplicate standard attributes</td>
<td align="center">Extension</td>
</tr>
<tr class="open" id="1915">
<td><a href="https://cplusplus.github.io/CWG/issues/1915.html">1915</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>open</td>
<td>Potentially-invoked destructors in non-throwing constructors</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1916">
<td><a href="https://cplusplus.github.io/CWG/issues/1916.html">1916</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>CD4</td>
<td>&#8220;Same cv-unqualified type&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1917">
<td><a href="https://cplusplus.github.io/CWG/issues/1917.html">1917</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>NAD</td>
<td>decltype-qualified enumeration names</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1918">
<td><a href="https://cplusplus.github.io/CWG/issues/1918.html">1918</a></td>
+ <td>[<a href="https://wg21.link/temp.friend">temp.friend</a>]</td>
<td>CD5</td>
<td><TT>friend</TT> templates with dependent scopes</td>
<td class="none" align="center">No</td>
</tr>
<tr class="open" id="1919">
<td><a href="https://cplusplus.github.io/CWG/issues/1919.html">1919</a></td>
+ <td>[<a href="https://wg21.link/over.match.oper">over.match.oper</a>]</td>
<td>open</td>
<td>Overload resolution for <TT>!</TT> with explicit conversion operator</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1920">
<td><a href="https://cplusplus.github.io/CWG/issues/1920.html">1920</a></td>
+ <td>[<a href="https://wg21.link/expr.pseudo">expr.pseudo</a>]</td>
<td>CD4</td>
<td>Qualification mismatch in <I>pseudo-destructor-name</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1921">
<td><a href="https://cplusplus.github.io/CWG/issues/1921.html">1921</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>NAD</td>
<td><TT>constexpr</TT> constructors and point of initialization of <TT>const</TT> variables</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1922">
<td><a href="https://cplusplus.github.io/CWG/issues/1922.html">1922</a></td>
+ <td>[<a href="https://wg21.link/temp.local">temp.local</a>]</td>
<td>CD4</td>
<td>Injected class template names and default arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1923">
<td><a href="https://cplusplus.github.io/CWG/issues/1923.html">1923</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.op">expr.unary.op</a>]</td>
<td>NAD</td>
<td>Lvalues of type <TT>void</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1924">
<td><a href="https://cplusplus.github.io/CWG/issues/1924.html">1924</a></td>
+ <td>[<a href="https://wg21.link/lex.literal">lex.literal</a>]</td>
<td>review</td>
<td>Definition of &#8220;literal&#8221; and kinds of literals</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1925">
<td><a href="https://cplusplus.github.io/CWG/issues/1925.html">1925</a></td>
+ <td>[<a href="https://wg21.link/expr.comma">expr.comma</a>]</td>
<td>CD4</td>
<td>Bit-field prvalues</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1926">
<td><a href="https://cplusplus.github.io/CWG/issues/1926.html">1926</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD4</td>
<td>Potential results of subscript operator</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1927">
<td><a href="https://cplusplus.github.io/CWG/issues/1927.html">1927</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>dup</td>
<td>Lifetime of temporaries in <I>init-capture</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1928">
<td><a href="https://cplusplus.github.io/CWG/issues/1928.html">1928</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>NAD</td>
<td>Triviality of deleted special member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1929">
<td><a href="https://cplusplus.github.io/CWG/issues/1929.html">1929</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.general">expr.prim.general</a>]</td>
<td>CD4</td>
<td><TT>template</TT> keyword following namespace <I>nested-name-specifier</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1930">
<td><a href="https://cplusplus.github.io/CWG/issues/1930.html">1930</a></td>
+ <td>[<a href="https://wg21.link/dcl.stc">dcl.stc</a>]</td>
<td>CD4</td>
<td><I>init-declarator-list</I> vs <I>member-declarator-list</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1931">
<td><a href="https://cplusplus.github.io/CWG/issues/1931.html">1931</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD5</td>
<td>Default-constructible and copy-assignable closure types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1932">
<td><a href="https://cplusplus.github.io/CWG/issues/1932.html">1932</a></td>
+ <td>[<a href="https://wg21.link/expr.cond">expr.cond</a>]</td>
<td>CD4</td>
<td>Bit-field results of conditional operators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1933">
<td><a href="https://cplusplus.github.io/CWG/issues/1933.html">1933</a></td>
+ <td>[<a href="https://wg21.link/implimits">implimits</a>]</td>
<td>NAD</td>
<td>Implementation limit for <I>initializer-list</I> elements</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1934">
<td><a href="https://cplusplus.github.io/CWG/issues/1934.html">1934</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>NAD</td>
<td>Relaxing <I>exception-specification</I> compatibility requirements</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1935">
<td><a href="https://cplusplus.github.io/CWG/issues/1935.html">1935</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD5</td>
<td>Reuse of placement arguments in deallocation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1936">
<td><a href="https://cplusplus.github.io/CWG/issues/1936.html">1936</a></td>
+ <td>[<a href="https://wg21.link/temp.dep">temp.dep</a>]</td>
<td>CD6</td>
<td>Dependent <I>qualified-id</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1937">
<td><a href="https://cplusplus.github.io/CWG/issues/1937.html">1937</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD5</td>
<td>Incomplete specification of function pointer from lambda</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1938">
<td><a href="https://cplusplus.github.io/CWG/issues/1938.html">1938</a></td>
+ <td>[<a href="https://wg21.link/intro.compliance">intro.compliance</a>]</td>
<td>CD5</td>
<td>Should hosted/freestanding be implementation-defined?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1939">
<td><a href="https://cplusplus.github.io/CWG/issues/1939.html">1939</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>open</td>
<td>Argument conversions to nondeduced parameter types revisited</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1940">
<td><a href="https://cplusplus.github.io/CWG/issues/1940.html">1940</a></td>
+ <td>[<a href="https://wg21.link/class.union">class.union</a>]</td>
<td>CD4</td>
<td><TT>static_assert</TT> in anonymous unions</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="1941">
<td><a href="https://cplusplus.github.io/CWG/issues/1941.html">1941</a></td>
+ <td>[<a href="https://wg21.link/class.inhctor">class.inhctor</a>]</td>
<td>CD4</td>
<td>SFINAE and inherited constructor default arguments</td>
<td class="full" align="center">Clang 3.9</td>
</tr>
<tr id="1942">
<td><a href="https://cplusplus.github.io/CWG/issues/1942.html">1942</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>CD4</td>
<td>Incorrect reference to <I>trailing-return-type</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1943">
<td><a href="https://cplusplus.github.io/CWG/issues/1943.html">1943</a></td>
+ <td>[<a href="https://wg21.link/class.bit">class.bit</a>]</td>
<td>CD5</td>
<td>Unspecified meaning of &#8220;bit&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1944">
<td><a href="https://cplusplus.github.io/CWG/issues/1944.html">1944</a></td>
+ <td>[<a href="https://wg21.link/diff">diff</a>]</td>
<td>open</td>
<td>New C incompatibilities</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1945">
<td><a href="https://cplusplus.github.io/CWG/issues/1945.html">1945</a></td>
+ <td>[<a href="https://wg21.link/temp.friend">temp.friend</a>]</td>
<td>CD5</td>
<td>Friend declarations naming members of class templates in non-templates</td>
<td class="none" align="center">No</td>
</tr>
<tr id="1946">
<td><a href="https://cplusplus.github.io/CWG/issues/1946.html">1946</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>CD4</td>
<td><I>exception-specification</I>s vs pointer dereference</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1947">
<td><a href="https://cplusplus.github.io/CWG/issues/1947.html">1947</a></td>
+ <td>[<a href="https://wg21.link/lex.icon">lex.icon</a>]</td>
<td>NAD</td>
<td>Digit separators following non-octal prefix</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="1948">
<td><a href="https://cplusplus.github.io/CWG/issues/1948.html">1948</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic">basic.stc.dynamic</a>]</td>
<td>NAD</td>
<td><I>exception-specification</I> of replacement global <TT>new</TT></td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="1949">
<td><a href="https://cplusplus.github.io/CWG/issues/1949.html">1949</a></td>
+ <td>[<a href="https://wg21.link/intro.execution">intro.execution</a>]</td>
<td>CD4</td>
<td>&#8220;sequenced after&#8221; instead of &#8220;sequenced before&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1950">
<td><a href="https://cplusplus.github.io/CWG/issues/1950.html">1950</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>NAD</td>
<td>Restructuring description of ranks of conversion sequences</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1951">
<td><a href="https://cplusplus.github.io/CWG/issues/1951.html">1951</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>CD4</td>
<td>Cv-qualification and literal types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1952">
<td><a href="https://cplusplus.github.io/CWG/issues/1952.html">1952</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD4</td>
<td>Constant expressions and library undefined behavior</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1953">
<td><a href="https://cplusplus.github.io/CWG/issues/1953.html">1953</a></td>
+ <td>[<a href="https://wg21.link/intro.memory">intro.memory</a>]</td>
<td>CD7</td>
<td>Data races and common initial sequence</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1954">
<td><a href="https://cplusplus.github.io/CWG/issues/1954.html">1954</a></td>
+ <td>[<a href="https://wg21.link/expr.typeid">expr.typeid</a>]</td>
<td>CD7</td>
<td><TT>typeid</TT> null dereference check in subexpressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1955">
<td><a href="https://cplusplus.github.io/CWG/issues/1955.html">1955</a></td>
+ <td>[<a href="https://wg21.link/cpp.cond">cpp.cond</a>]</td>
<td>CD4</td>
<td><TT>#elif</TT> with invalid controlling expression</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1956">
<td><a href="https://cplusplus.github.io/CWG/issues/1956.html">1956</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.auto">basic.stc.auto</a>]</td>
<td>CD4</td>
<td>Reuse of storage of automatic variables</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1957">
<td><a href="https://cplusplus.github.io/CWG/issues/1957.html">1957</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>NAD</td>
<td><TT>decltype(auto)</TT> with direct-list-initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1958">
<td><a href="https://cplusplus.github.io/CWG/issues/1958.html">1958</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>CD4</td>
<td><TT>decltype(auto)</TT> with parenthesized initializer</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1959">
<td><a href="https://cplusplus.github.io/CWG/issues/1959.html">1959</a></td>
+ <td>[<a href="https://wg21.link/class.inhctor">class.inhctor</a>]</td>
<td>CD4</td>
<td>Inadvertently inherited copy constructor</td>
<td class="full" align="center">Clang 3.9</td>
</tr>
<tr id="1960">
<td><a href="https://cplusplus.github.io/CWG/issues/1960.html">1960</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>NAD</td>
<td>Visibility of entity named in class-scope <I>using-declaration</I></td>
<td class="none" align="center">No</td>
</tr>
<tr id="1961">
<td><a href="https://cplusplus.github.io/CWG/issues/1961.html">1961</a></td>
+ <td>[<a href="https://wg21.link/intro.multithread">intro.multithread</a>]</td>
<td>C++17</td>
<td>Potentially-concurrent actions within a signal handler</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1962">
<td><a href="https://cplusplus.github.io/CWG/issues/1962.html">1962</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.general">dcl.fct.def.general</a>]</td>
<td>open</td>
<td>Type of <TT>__func__</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr id="1963">
<td><a href="https://cplusplus.github.io/CWG/issues/1963.html">1963</a></td>
+ <td>[<a href="https://wg21.link/lex.name">lex.name</a>]</td>
<td>CD4</td>
<td>Implementation-defined identifier characters</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1964">
<td><a href="https://cplusplus.github.io/CWG/issues/1964.html">1964</a></td>
+ <td>[<a href="https://wg21.link/dcl.typedef">dcl.typedef</a>]</td>
<td>NAD</td>
<td><I>opaque-enum-declaration</I> in <I>alias-declaration</I>?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1965">
<td><a href="https://cplusplus.github.io/CWG/issues/1965.html">1965</a></td>
+ <td>[<a href="https://wg21.link/expr.dynamic.cast">expr.dynamic.cast</a>]</td>
<td>CD7</td>
<td>Explicit casts to reference types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1966">
<td><a href="https://cplusplus.github.io/CWG/issues/1966.html">1966</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>CD4</td>
<td>Colon following enumeration <I>elaborated-type-specifier</I></td>
<td class="full" align="center">Clang 11</td>
</tr>
<tr id="1967">
<td><a href="https://cplusplus.github.io/CWG/issues/1967.html">1967</a></td>
+ <td>[<a href="https://wg21.link/class.copy.elision">class.copy.elision</a>]</td>
<td>CD4</td>
<td>Temporary lifetime and move-elision</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1968">
<td><a href="https://cplusplus.github.io/CWG/issues/1968.html">1968</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>NAD</td>
<td>Address of <TT>typeid</TT> in constant expressions</td>
<td class="none" align="center">No</td>
</tr>
<tr id="1969">
<td><a href="https://cplusplus.github.io/CWG/issues/1969.html">1969</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>CD6</td>
<td>Missing exclusion of <TT>~S</TT> as an ordinary function name</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1970">
<td><a href="https://cplusplus.github.io/CWG/issues/1970.html">1970</a></td>
+ <td>[<a href="https://wg21.link/dcl.ambig.res">dcl.ambig.res</a>]</td>
<td>NAD</td>
<td>Ambiguity resolution for <TT>(T())*x</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1971">
<td><a href="https://cplusplus.github.io/CWG/issues/1971.html">1971</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.op">expr.unary.op</a>]</td>
<td>CD4</td>
<td>Unclear disambiguation of destructor and <TT>operator~</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1972">
<td><a href="https://cplusplus.github.io/CWG/issues/1972.html">1972</a></td>
+ <td>[<a href="https://wg21.link/lex.name">lex.name</a>]</td>
<td>CD6</td>
<td>Identifier character restrictions in non-<I>identifier</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1973">
<td><a href="https://cplusplus.github.io/CWG/issues/1973.html">1973</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD7</td>
<td>Which <I>parameter-declaration-clause</I> in a <I>lambda-expression</I>?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1974">
<td><a href="https://cplusplus.github.io/CWG/issues/1974.html">1974</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>NAD</td>
<td>Redundant specification of non-type <I>typename-specifier</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1975">
<td><a href="https://cplusplus.github.io/CWG/issues/1975.html">1975</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>CD4</td>
<td>Permissible declarations for <I>exception-specification</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1976">
<td><a href="https://cplusplus.github.io/CWG/issues/1976.html">1976</a></td>
+ <td>[<a href="https://wg21.link/namespace.alias">namespace.alias</a>]</td>
<td>NAD</td>
<td>Ambiguity of <I>namespace-alias</I>es</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1977">
<td><a href="https://cplusplus.github.io/CWG/issues/1977.html">1977</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>open</td>
<td>Contradictory results of failed destructor lookup</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1978">
<td><a href="https://cplusplus.github.io/CWG/issues/1978.html">1978</a></td>
+ <td>[<a href="https://wg21.link/class.conv.ctor">class.conv.ctor</a>]</td>
<td>CD4</td>
<td>Redundant description of explicit constructor use</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1979">
<td><a href="https://cplusplus.github.io/CWG/issues/1979.html">1979</a></td>
+ <td>[<a href="https://wg21.link/temp.alias">temp.alias</a>]</td>
<td>drafting</td>
<td>Alias template specialization in template member definition</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="1980">
<td><a href="https://cplusplus.github.io/CWG/issues/1980.html">1980</a></td>
+ <td>[<a href="https://wg21.link/temp.alias">temp.alias</a>]</td>
<td>drafting</td>
<td>Equivalent but not functionally-equivalent redeclarations</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1981">
<td><a href="https://cplusplus.github.io/CWG/issues/1981.html">1981</a></td>
+ <td>[<a href="https://wg21.link/conv">conv</a>]</td>
<td>CD4</td>
<td>Implicit contextual conversions and <TT>explicit</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1982">
<td><a href="https://cplusplus.github.io/CWG/issues/1982.html">1982</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.explicit">temp.arg.explicit</a>]</td>
<td>NAD</td>
<td>Deduction extending parameter pack</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1983">
<td><a href="https://cplusplus.github.io/CWG/issues/1983.html">1983</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD5</td>
<td>Inappropriate use of <I>virt-specifier</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1984">
<td><a href="https://cplusplus.github.io/CWG/issues/1984.html">1984</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>NAD</td>
<td>Lossless narrowing conversions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1985">
<td><a href="https://cplusplus.github.io/CWG/issues/1985.html">1985</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>NAD</td>
<td>Unknown bound array member with <I>brace-or-equal-initializer</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1986">
<td><a href="https://cplusplus.github.io/CWG/issues/1986.html">1986</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>drafting</td>
<td>odr-use and delayed initialization</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1987">
<td><a href="https://cplusplus.github.io/CWG/issues/1987.html">1987</a></td>
+ <td>[<a href="https://wg21.link/class.static.data">class.static.data</a>]</td>
<td>NAD</td>
<td><TT>constexpr</TT> static data members across translation units</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1988">
<td><a href="https://cplusplus.github.io/CWG/issues/1988.html">1988</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>CD4</td>
<td>Ambiguity between dependent and non-dependent bases in implicit member access</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1989">
<td><a href="https://cplusplus.github.io/CWG/issues/1989.html">1989</a></td>
+ <td>[<a href="https://wg21.link/over.oper">over.oper</a>]</td>
<td>drafting</td>
<td>Insufficient restrictions on parameters of postfix operators</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1990">
<td><a href="https://cplusplus.github.io/CWG/issues/1990.html">1990</a></td>
+ <td>[<a href="https://wg21.link/dcl.pre">dcl.pre</a>]</td>
<td>CD4</td>
<td>Ambiguity due to optional <I>decl-specifier-seq</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1991">
<td><a href="https://cplusplus.github.io/CWG/issues/1991.html">1991</a></td>
+ <td>[<a href="https://wg21.link/class.inhctor">class.inhctor</a>]</td>
<td>CD4</td>
<td>Inheriting constructors vs default arguments</td>
<td class="full" align="center">Clang 3.9</td>
</tr>
<tr id="1992">
<td><a href="https://cplusplus.github.io/CWG/issues/1992.html">1992</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD4</td>
<td><TT>new (std::nothrow) int[N]</TT> can throw</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1993">
<td><a href="https://cplusplus.github.io/CWG/issues/1993.html">1993</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>open</td>
<td>Use of <TT>template&lt;&gt;</TT> defining member of explicit specialization</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1994">
<td><a href="https://cplusplus.github.io/CWG/issues/1994.html">1994</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>dup</td>
<td>Confusing wording regarding multiple <TT>template&lt;&gt;</TT> prefixes</td>
<td class="unknown" align="center">Duplicate of <a href="#529">529</a></td>
</tr>
<tr id="1995">
<td><a href="https://cplusplus.github.io/CWG/issues/1995.html">1995</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>CD4</td>
<td><I>exception-specification</I>s and non-type template parameters</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="1996">
<td><a href="https://cplusplus.github.io/CWG/issues/1996.html">1996</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>drafting</td>
<td>Reference list-initialization ignores conversion functions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="1997">
<td><a href="https://cplusplus.github.io/CWG/issues/1997.html">1997</a></td>
+ <td>[<a href="https://wg21.link/basic.indet">basic.indet</a>]</td>
<td>CD7</td>
<td>Placement new and previous initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1998">
<td><a href="https://cplusplus.github.io/CWG/issues/1998.html">1998</a></td>
+ <td>[<a href="https://wg21.link/basic.lval">basic.lval</a>]</td>
<td>NAD</td>
<td>Additional sources of xvalue expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="1999">
<td><a href="https://cplusplus.github.io/CWG/issues/1999.html">1999</a></td>
+ <td>[<a href="https://wg21.link/lex.phases">lex.phases</a>]</td>
<td>CD4</td>
<td>Representation of source characters as universal-character-names</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2000">
<td><a href="https://cplusplus.github.io/CWG/issues/2000.html">2000</a></td>
+ <td>[<a href="https://wg21.link/lex.pptoken">lex.pptoken</a>]</td>
<td>CD4</td>
<td><I>header-name</I> outside <TT>#include</TT> directive</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2001">
<td><a href="https://cplusplus.github.io/CWG/issues/2001.html">2001</a></td>
+ <td>[<a href="https://wg21.link/cpp.pre">cpp.pre</a>]</td>
<td>CD4</td>
<td><I>non-directive</I> is underspecified</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2002">
<td><a href="https://cplusplus.github.io/CWG/issues/2002.html">2002</a></td>
+ <td>[<a href="https://wg21.link/cpp.pre">cpp.pre</a>]</td>
<td>open</td>
<td>White space within preprocessing directives</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2003">
<td><a href="https://cplusplus.github.io/CWG/issues/2003.html">2003</a></td>
+ <td>[<a href="https://wg21.link/cpp.replace">cpp.replace</a>]</td>
<td>drafting</td>
<td>Zero-argument macros incorrectly specified</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2004">
<td><a href="https://cplusplus.github.io/CWG/issues/2004.html">2004</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD4</td>
<td>Unions with mutable members in constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2005">
<td><a href="https://cplusplus.github.io/CWG/issues/2005.html">2005</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>NAD</td>
<td>Incorrect <TT>constexpr</TT> reference initialization requirements</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2006">
<td><a href="https://cplusplus.github.io/CWG/issues/2006.html">2006</a></td>
+ <td>[<a href="https://wg21.link/basic.compound">basic.compound</a>]</td>
<td>CD4</td>
<td>Cv-qualified <TT>void</TT> types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2007">
<td><a href="https://cplusplus.github.io/CWG/issues/2007.html">2007</a></td>
+ <td>[<a href="https://wg21.link/over.match.oper">over.match.oper</a>]</td>
<td>CD6</td>
<td>Argument-dependent lookup for <TT>operator=</TT></td>
<td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="2008">
<td><a href="https://cplusplus.github.io/CWG/issues/2008.html">2008</a></td>
+ <td>[<a href="https://wg21.link/temp.arg">temp.arg</a>]</td>
<td>CD4</td>
<td>Default <I>template-argument</I>s underspecified</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2009">
<td><a href="https://cplusplus.github.io/CWG/issues/2009.html">2009</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.class">basic.scope.class</a>]</td>
<td>CD6</td>
<td>Unclear specification of class scope</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="2010">
<td><a href="https://cplusplus.github.io/CWG/issues/2010.html">2010</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>CD4</td>
<td><I>exception-specification</I>s and conversion operators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2011">
<td><a href="https://cplusplus.github.io/CWG/issues/2011.html">2011</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>C++17</td>
<td>Unclear effect of reference capture of reference</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2012">
<td><a href="https://cplusplus.github.io/CWG/issues/2012.html">2012</a></td>
+ <td>[<a href="https://wg21.link/basic.stc">basic.stc</a>]</td>
<td>CD4</td>
<td>Lifetime of references</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2013">
<td><a href="https://cplusplus.github.io/CWG/issues/2013.html">2013</a></td>
+ <td>[<a href="https://wg21.link/expr.add">expr.add</a>]</td>
<td>drafting</td>
<td>Pointer subtraction in large array</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2014">
<td><a href="https://cplusplus.github.io/CWG/issues/2014.html">2014</a></td>
+ <td>[<a href="https://wg21.link/new.delete.array">new.delete.array</a>]</td>
<td>NAD</td>
<td>Unneeded deallocation signatures</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2015">
<td><a href="https://cplusplus.github.io/CWG/issues/2015.html">2015</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.delete">dcl.fct.def.delete</a>]</td>
<td>CD4</td>
<td>odr-use of deleted virtual functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2016">
<td><a href="https://cplusplus.github.io/CWG/issues/2016.html">2016</a></td>
+ <td>[<a href="https://wg21.link/class.conv.fct">class.conv.fct</a>]</td>
<td>CD4</td>
<td>Confusing wording in description of conversion function</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2017">
<td><a href="https://cplusplus.github.io/CWG/issues/2017.html">2017</a></td>
+ <td>[<a href="https://wg21.link/stmt.return">stmt.return</a>]</td>
<td>CD4</td>
<td>Flowing off end is not equivalent to no-expression return</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2018">
<td><a href="https://cplusplus.github.io/CWG/issues/2018.html">2018</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>dup</td>
<td>Qualification conversion vs reference binding</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2019">
<td><a href="https://cplusplus.github.io/CWG/issues/2019.html">2019</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.general">basic.stc.general</a>]</td>
<td>CD4</td>
<td>Member references omitted from description of storage duration</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2020">
<td><a href="https://cplusplus.github.io/CWG/issues/2020.html">2020</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD5</td>
<td>Inadequate description of odr-use of implicitly-invoked functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2021">
<td><a href="https://cplusplus.github.io/CWG/issues/2021.html">2021</a></td>
+ <td>[<a href="https://wg21.link/temp.over.link">temp.over.link</a>]</td>
<td>dup</td>
<td>Function template redeclaration via alias template</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2022">
<td><a href="https://cplusplus.github.io/CWG/issues/2022.html">2022</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD4</td>
<td>Copy elision in constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2023">
<td><a href="https://cplusplus.github.io/CWG/issues/2023.html">2023</a></td>
+ <td>[<a href="https://wg21.link/expr.cond">expr.cond</a>]</td>
<td>drafting</td>
<td>Composite reference result type of conditional operator</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2024">
<td><a href="https://cplusplus.github.io/CWG/issues/2024.html">2024</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>CD4</td>
<td>Dependent types and unexpanded parameter packs</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2025">
<td><a href="https://cplusplus.github.io/CWG/issues/2025.html">2025</a></td>
+ <td>[<a href="https://wg21.link/temp.over.link">temp.over.link</a>]</td>
<td>dup</td>
<td>Declaration matching via alias templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2026">
<td><a href="https://cplusplus.github.io/CWG/issues/2026.html">2026</a></td>
+ <td>[<a href="https://wg21.link/basic.start">basic.start</a>]</td>
<td>CD4</td>
<td>Zero-initialization and <TT>constexpr</TT></td>
<td class="full" align="center">Clang 11</td>
</tr>
<tr id="2027">
<td><a href="https://cplusplus.github.io/CWG/issues/2027.html">2027</a></td>
+ <td>[<a href="https://wg21.link/dcl.align">dcl.align</a>]</td>
<td>CD4</td>
<td>Unclear requirements for multiple <TT>alignas</TT> specifiers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2028">
<td><a href="https://cplusplus.github.io/CWG/issues/2028.html">2028</a></td>
+ <td>[<a href="https://wg21.link/over.match.ref">over.match.ref</a>]</td>
<td>drafting</td>
<td>Converting constructors in rvalue reference initialization</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2029">
<td><a href="https://cplusplus.github.io/CWG/issues/2029.html">2029</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>dup</td>
<td>Abstract class return type in <TT>decltype</TT> operand</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2030">
<td><a href="https://cplusplus.github.io/CWG/issues/2030.html">2030</a></td>
+ <td>[<a href="https://wg21.link/class.access.base">class.access.base</a>]</td>
<td>NAD</td>
<td>Access of injected-class-name with template arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2031">
<td><a href="https://cplusplus.github.io/CWG/issues/2031.html">2031</a></td>
+ <td>[<a href="https://wg21.link/diff.cpp03.expr">diff.cpp03.expr</a>]</td>
<td>CD4</td>
<td>Missing incompatibility for <TT>&amp;&amp;</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2032">
<td><a href="https://cplusplus.github.io/CWG/issues/2032.html">2032</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>CD4</td>
<td>Default <I>template-argument</I>s of variable templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2033">
<td><a href="https://cplusplus.github.io/CWG/issues/2033.html">2033</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial.general">temp.spec.partial.general</a>]</td>
<td>CD4</td>
<td>Redundant restriction on partial specialization argument</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2034">
<td><a href="https://cplusplus.github.io/CWG/issues/2034.html">2034</a></td>
+ <td>[<a href="https://wg21.link/except.uncaught">except.uncaught</a>]</td>
<td>NAD</td>
<td>Deprecating <TT>uncaught_exception()</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2035">
<td><a href="https://cplusplus.github.io/CWG/issues/2035.html">2035</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial.match">temp.spec.partial.match</a>]</td>
<td>CD3</td>
<td>Multi-section example is confusing</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2036">
<td><a href="https://cplusplus.github.io/CWG/issues/2036.html">2036</a></td>
+ <td>[<a href="https://wg21.link/dcl.decl">dcl.decl</a>]</td>
<td>NAD</td>
<td>Refactoring <I>parameters-and-qualifiers</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2037">
<td><a href="https://cplusplus.github.io/CWG/issues/2037.html">2037</a></td>
+ <td>[<a href="https://wg21.link/temp.type">temp.type</a>]</td>
<td>drafting</td>
<td>Alias templates and template declaration matching</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2038">
<td><a href="https://cplusplus.github.io/CWG/issues/2038.html">2038</a></td>
+ <td>[<a href="https://wg21.link/diff.cpp14">diff.cpp14</a>]</td>
<td>CD4</td>
<td>Document C++14 incompatibility of new braced deduction rule</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2039">
<td><a href="https://cplusplus.github.io/CWG/issues/2039.html">2039</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>CD4</td>
<td>Constant conversions to <TT>bool</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2040">
<td><a href="https://cplusplus.github.io/CWG/issues/2040.html">2040</a></td>
+ <td>[<a href="https://wg21.link/dcl.decl">dcl.decl</a>]</td>
<td>CD4</td>
<td><I>trailing-return-type</I> no longer ambiguous</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2041">
<td><a href="https://cplusplus.github.io/CWG/issues/2041.html">2041</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>CD4</td>
<td>Namespace for explicit class template specialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2042">
<td><a href="https://cplusplus.github.io/CWG/issues/2042.html">2042</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.deallocation">basic.stc.dynamic.deallocation</a>]</td>
<td>review</td>
<td>Exceptions and deallocation functions</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2043">
<td><a href="https://cplusplus.github.io/CWG/issues/2043.html">2043</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.nontype">temp.arg.nontype</a>]</td>
<td>drafting</td>
<td>Generalized template arguments and array-to-pointer decay</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2044">
<td><a href="https://cplusplus.github.io/CWG/issues/2044.html">2044</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>CD4</td>
<td><TT>decltype(auto)</TT> and <TT>void</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2045">
<td><a href="https://cplusplus.github.io/CWG/issues/2045.html">2045</a></td>
+ <td>[<a href="https://wg21.link/temp.over.link">temp.over.link</a>]</td>
<td>CD5</td>
<td>&#8220;Identical&#8221; template parameter lists</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2046">
<td><a href="https://cplusplus.github.io/CWG/issues/2046.html">2046</a></td>
+ <td>[<a href="https://wg21.link/intro.multithread">intro.multithread</a>]</td>
<td>C++17</td>
<td>Incomplete thread specifications</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2047">
<td><a href="https://cplusplus.github.io/CWG/issues/2047.html">2047</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>CD4</td>
<td>Coordinating &#8220;throws anything&#8221; specifications</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2048">
<td><a href="https://cplusplus.github.io/CWG/issues/2048.html">2048</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>open</td>
<td>C-style casts that cast away constness vs <TT>static_cast</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr id="2049">
<td><a href="https://cplusplus.github.io/CWG/issues/2049.html">2049</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.nontype">temp.arg.nontype</a>]</td>
<td>CD7</td>
<td>List initializer in non-type template default argument</td>
<td class="full" align="center">Clang 18</td>
</tr>
<tr id="2050">
<td><a href="https://cplusplus.github.io/CWG/issues/2050.html">2050</a></td>
+ <td>[<a href="https://wg21.link/dcl.stc">dcl.stc</a>]</td>
<td>NAD</td>
<td>Consolidate specification of linkage</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2051">
<td><a href="https://cplusplus.github.io/CWG/issues/2051.html">2051</a></td>
+ <td>[<a href="https://wg21.link/basic.lval">basic.lval</a>]</td>
<td>CD5</td>
<td>Simplifying alias rules</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2052">
<td><a href="https://cplusplus.github.io/CWG/issues/2052.html">2052</a></td>
+ <td>[<a href="https://wg21.link/over.oper">over.oper</a>]</td>
<td>CD4</td>
<td>Template argument deduction vs overloaded operators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2053">
<td><a href="https://cplusplus.github.io/CWG/issues/2053.html">2053</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>C++20</td>
<td><TT>auto</TT> in non-generic lambdas</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2054">
<td><a href="https://cplusplus.github.io/CWG/issues/2054.html">2054</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>CD7</td>
<td>Missing description of class SFINAE</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2055">
<td><a href="https://cplusplus.github.io/CWG/issues/2055.html">2055</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.explicit">temp.arg.explicit</a>]</td>
<td>drafting</td>
<td>Explicitly-specified non-deduced parameter packs</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2056">
<td><a href="https://cplusplus.github.io/CWG/issues/2056.html">2056</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>open</td>
<td>Member function calls in partially-initialized class objects</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2057">
<td><a href="https://cplusplus.github.io/CWG/issues/2057.html">2057</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.template">temp.arg.template</a>]</td>
<td>drafting</td>
<td>Template template arguments with default arguments</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2058">
<td><a href="https://cplusplus.github.io/CWG/issues/2058.html">2058</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD6</td>
<td>More errors from internal-linkage namespaces</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2059">
<td><a href="https://cplusplus.github.io/CWG/issues/2059.html">2059</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>CD5</td>
<td>Linkage and deduced return types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2060">
<td><a href="https://cplusplus.github.io/CWG/issues/2060.html">2060</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>NAD</td>
<td>Deduced return type for explicit specialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2061">
<td><a href="https://cplusplus.github.io/CWG/issues/2061.html">2061</a></td>
+ <td>[<a href="https://wg21.link/namespace.def">namespace.def</a>]</td>
<td>CD4</td>
<td>Inline namespace after simplifications</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="2062">
<td><a href="https://cplusplus.github.io/CWG/issues/2062.html">2062</a></td>
+ <td>[<a href="https://wg21.link/temp.class">temp.class</a>]</td>
<td>CD6</td>
<td>Class template redeclaration requirements</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2063">
<td><a href="https://cplusplus.github.io/CWG/issues/2063.html">2063</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.declarative">basic.scope.declarative</a>]</td>
<td>CD4</td>
<td>Type/nontype hiding in class scope</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2064">
<td><a href="https://cplusplus.github.io/CWG/issues/2064.html">2064</a></td>
+ <td>[<a href="https://wg21.link/temp.type">temp.type</a>]</td>
<td>CD4</td>
<td>Conflicting specifications for dependent <I>decltype-specifier</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2065">
<td><a href="https://cplusplus.github.io/CWG/issues/2065.html">2065</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>CD6</td>
<td>Current instantiation of a partial specialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2066">
<td><a href="https://cplusplus.github.io/CWG/issues/2066.html">2066</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.constexpr">temp.dep.constexpr</a>]</td>
<td>CD4</td>
<td>Does type-dependent imply value-dependent?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2067">
<td><a href="https://cplusplus.github.io/CWG/issues/2067.html">2067</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>open</td>
<td>Generated variadic templates requiring empty pack</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2068">
<td><a href="https://cplusplus.github.io/CWG/issues/2068.html">2068</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>CD4</td>
<td>When can/must a defaulted virtual destructor be defined?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2069">
<td><a href="https://cplusplus.github.io/CWG/issues/2069.html">2069</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>CD4</td>
<td>Do destructors have names?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2070">
<td><a href="https://cplusplus.github.io/CWG/issues/2070.html">2070</a></td>
+ <td>[<a href="https://wg21.link/class.qual">class.qual</a>]</td>
<td>CD6</td>
<td><I>using-declaration</I> with dependent <I>nested-name-specifier</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2071">
<td><a href="https://cplusplus.github.io/CWG/issues/2071.html">2071</a></td>
+ <td>[<a href="https://wg21.link/dcl.typedef">dcl.typedef</a>]</td>
<td>CD4</td>
<td><TT>typedef</TT> with no declarator</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2072">
<td><a href="https://cplusplus.github.io/CWG/issues/2072.html">2072</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>C++23</td>
<td>Default argument instantiation for member functions of templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2073">
<td><a href="https://cplusplus.github.io/CWG/issues/2073.html">2073</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.allocation">basic.stc.dynamic.allocation</a>]</td>
<td>open</td>
<td>Allocating memory for exception objects</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2074">
<td><a href="https://cplusplus.github.io/CWG/issues/2074.html">2074</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>drafting</td>
<td>Type-dependence of local class of function template</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2075">
<td><a href="https://cplusplus.github.io/CWG/issues/2075.html">2075</a></td>
+ <td>[<a href="https://wg21.link/over.ics.list">over.ics.list</a>]</td>
<td>CD4</td>
<td>Passing short initializer lists to array reference parameters</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2076">
<td><a href="https://cplusplus.github.io/CWG/issues/2076.html">2076</a></td>
+ <td>[<a href="https://wg21.link/over.best.ics">over.best.ics</a>]</td>
<td>CD4</td>
<td>List-initialization of arguments for constructor parameters</td>
<td class="full" align="center">Clang 13</td>
</tr>
<tr class="open" id="2077">
<td><a href="https://cplusplus.github.io/CWG/issues/2077.html">2077</a></td>
+ <td>[<a href="https://wg21.link/over.ics.ref">over.ics.ref</a>]</td>
<td>drafting</td>
<td>Overload resolution and invalid rvalue-reference initialization</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2078">
<td><a href="https://cplusplus.github.io/CWG/issues/2078.html">2078</a></td>
+ <td>[<a href="https://wg21.link/class.member.lookup">class.member.lookup</a>]</td>
<td>NAD</td>
<td>Name lookup of <I>mem-initilizer-id</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2079">
<td><a href="https://cplusplus.github.io/CWG/issues/2079.html">2079</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.grammar">dcl.attr.grammar</a>]</td>
<td>CD4</td>
<td><TT>[[</TT> appearing in a <I>balanced-token-seq</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2080">
<td><a href="https://cplusplus.github.io/CWG/issues/2080.html">2080</a></td>
+ <td>[<a href="https://wg21.link/class.union">class.union</a>]</td>
<td>CD5</td>
<td>Example with empty anonymous union member</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2081">
<td><a href="https://cplusplus.github.io/CWG/issues/2081.html">2081</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>CD5</td>
<td>Deduced return type in redeclaration or specialization of function template</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2082">
<td><a href="https://cplusplus.github.io/CWG/issues/2082.html">2082</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>CD4</td>
<td>Referring to parameters in unevaluated operands of default arguments</td>
<td class="full" align="center">Clang 11</td>
</tr>
<tr id="2083">
<td><a href="https://cplusplus.github.io/CWG/issues/2083.html">2083</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD5</td>
<td>Incorrect cases of odr-use</td>
<td class="partial" align="center">Partial</td>
</tr>
<tr id="2084">
<td><a href="https://cplusplus.github.io/CWG/issues/2084.html">2084</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>CD4</td>
<td>NSDMIs and deleted union default constructors</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="2085">
<td><a href="https://cplusplus.github.io/CWG/issues/2085.html">2085</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD4</td>
<td>Invalid example of adding special member function via default argument</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2086">
<td><a href="https://cplusplus.github.io/CWG/issues/2086.html">2086</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>drafting</td>
<td>Reference odr-use vs implicit capture</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2087">
<td><a href="https://cplusplus.github.io/CWG/issues/2087.html">2087</a></td>
+ <td>[<a href="https://wg21.link/expr.shift">expr.shift</a>]</td>
<td>NAD</td>
<td>Left shift of negative value by zero bits</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2088">
<td><a href="https://cplusplus.github.io/CWG/issues/2088.html">2088</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.partial">temp.deduct.partial</a>]</td>
<td>CD5</td>
<td>Late tiebreakers in partial ordering</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2089">
<td><a href="https://cplusplus.github.io/CWG/issues/2089.html">2089</a></td>
+ <td>[<a href="https://wg21.link/over.match.oper">over.match.oper</a>]</td>
<td>drafting</td>
<td>Restricting selection of builtin overloaded operators</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2090">
<td><a href="https://cplusplus.github.io/CWG/issues/2090.html">2090</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.temp">temp.dep.temp</a>]</td>
<td>open</td>
<td>Dependency via non-dependent base class</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2091">
<td><a href="https://cplusplus.github.io/CWG/issues/2091.html">2091</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>CD4</td>
<td>Deducing reference non-type template arguments</td>
<td class="full" align="center">Clang 10</td>
</tr>
<tr id="2092">
<td><a href="https://cplusplus.github.io/CWG/issues/2092.html">2092</a></td>
+ <td>[<a href="https://wg21.link/temp.over">temp.over</a>]</td>
<td>CD5</td>
<td>Deduction failure and overload resolution</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2093">
<td><a href="https://cplusplus.github.io/CWG/issues/2093.html">2093</a></td>
+ <td>[<a href="https://wg21.link/except.handle">except.handle</a>]</td>
<td>CD4</td>
<td>Qualification conversion for pointer-to-member handler matching</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2094">
<td><a href="https://cplusplus.github.io/CWG/issues/2094.html">2094</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>C++17</td>
<td>Trivial copy/move constructor for class with volatile member</td>
<td class="full" align="center">Clang 5</td>
</tr>
<tr id="2095">
<td><a href="https://cplusplus.github.io/CWG/issues/2095.html">2095</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>CD4</td>
<td>Capturing rvalue references to functions by copy</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2096">
<td><a href="https://cplusplus.github.io/CWG/issues/2096.html">2096</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>CD4</td>
<td>Constraints on literal unions</td>
<td class="full" align="center">Duplicate of <a href="#2598">2598</a></td>
</tr>
<tr class="open" id="2097">
<td><a href="https://cplusplus.github.io/CWG/issues/2097.html">2097</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda">expr.prim.lambda</a>]</td>
<td>extension</td>
<td>Lambdas and <TT>noreturn</TT> attribute</td>
<td align="center">Extension</td>
</tr>
<tr id="2098">
<td><a href="https://cplusplus.github.io/CWG/issues/2098.html">2098</a></td>
+ <td>[<a href="https://wg21.link/except.uncaught">except.uncaught</a>]</td>
<td>CD4</td>
<td>Is <TT>uncaught_exceptions()</TT> per-thread?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2099">
<td><a href="https://cplusplus.github.io/CWG/issues/2099.html">2099</a></td>
+ <td>[<a href="https://wg21.link/dcl.array">dcl.array</a>]</td>
<td>CD4</td>
<td>Inferring the bound of an array static data member</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2100">
<td><a href="https://cplusplus.github.io/CWG/issues/2100.html">2100</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.constexpr">temp.dep.constexpr</a>]</td>
<td>C++17</td>
<td>Value-dependent address of static data member of class template</td>
<td class="full" align="center">Clang 12</td>
</tr>
<tr id="2101">
<td><a href="https://cplusplus.github.io/CWG/issues/2101.html">2101</a></td>
+ <td>[<a href="https://wg21.link/temp.dep">temp.dep</a>]</td>
<td>CD4</td>
<td>Incorrect description of type- and value-dependence</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2102">
<td><a href="https://cplusplus.github.io/CWG/issues/2102.html">2102</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD7</td>
<td>Constructor checking in <I>new-expression</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2103">
<td><a href="https://cplusplus.github.io/CWG/issues/2103.html">2103</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD5</td>
<td>Lvalue-to-rvalue conversion is irrelevant in odr-use of a reference</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="2104">
<td><a href="https://cplusplus.github.io/CWG/issues/2104.html">2104</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD4</td>
<td>Internal-linkage <TT>constexpr</TT> references and ODR requirements</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2105">
<td><a href="https://cplusplus.github.io/CWG/issues/2105.html">2105</a></td>
+ <td>[<a href="https://wg21.link/temp.arg">temp.arg</a>]</td>
<td>open</td>
<td>When do the arguments for a parameter pack end?</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2106">
<td><a href="https://cplusplus.github.io/CWG/issues/2106.html">2106</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.type">temp.arg.type</a>]</td>
<td>CD4</td>
<td>Unclear restrictions on use of function-type template arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2107">
<td><a href="https://cplusplus.github.io/CWG/issues/2107.html">2107</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>CD4</td>
<td>Lifetime of temporaries for default arguments in array copying</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2108">
<td><a href="https://cplusplus.github.io/CWG/issues/2108.html">2108</a></td>
+ <td>[<a href="https://wg21.link/over.match.ref">over.match.ref</a>]</td>
<td>drafting</td>
<td>Conversions to non-class prvalues in reference initialization</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2109">
<td><a href="https://cplusplus.github.io/CWG/issues/2109.html">2109</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.constexpr">temp.dep.constexpr</a>]</td>
<td>CD4</td>
<td>Value dependence underspecified</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2110">
<td><a href="https://cplusplus.github.io/CWG/issues/2110.html">2110</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>drafting</td>
<td>Overload resolution for base class conversion and reference/non-reference</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2111">
<td><a href="https://cplusplus.github.io/CWG/issues/2111.html">2111</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>NAD</td>
<td>Array temporaries in reference binding</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2112">
<td><a href="https://cplusplus.github.io/CWG/issues/2112.html">2112</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD5</td>
<td><TT>new auto{x}</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2113">
<td><a href="https://cplusplus.github.io/CWG/issues/2113.html">2113</a></td>
+ <td>[<a href="https://wg21.link/dcl.meaning">dcl.meaning</a>]</td>
<td>CD4</td>
<td>Incompete specification of types for declarators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2114">
<td><a href="https://cplusplus.github.io/CWG/issues/2114.html">2114</a></td>
+ <td>[<a href="https://wg21.link/diff.cpp11.dcl.decl">diff.cpp11.dcl.decl</a>]</td>
<td>CD3</td>
<td>Missing description of incompatibility from aggregate NSDMIs</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2115">
<td><a href="https://cplusplus.github.io/CWG/issues/2115.html">2115</a></td>
+ <td>[<a href="https://wg21.link/stmt.jump">stmt.jump</a>]</td>
<td>open</td>
<td>Order of implicit destruction vs release of automatic storage</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2116">
<td><a href="https://cplusplus.github.io/CWG/issues/2116.html">2116</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>C++17</td>
<td>Direct or copy initialization for omitted aggregate initializers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2117">
<td><a href="https://cplusplus.github.io/CWG/issues/2117.html">2117</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>NAD</td>
<td>Explicit specializations and <TT>constexpr</TT> function templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2118">
<td><a href="https://cplusplus.github.io/CWG/issues/2118.html">2118</a></td>
+ <td>[<a href="https://wg21.link/temp.friend">temp.friend</a>]</td>
<td>open</td>
<td>Stateful metaprogramming via friend injection</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2119">
<td><a href="https://cplusplus.github.io/CWG/issues/2119.html">2119</a></td>
+ <td>[<a href="https://wg21.link/class.virtual">class.virtual</a>]</td>
<td>NAD</td>
<td>Disambiguation of multi-level covariant return type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2120">
<td><a href="https://cplusplus.github.io/CWG/issues/2120.html">2120</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>CD4</td>
<td>Array as first non-static data member in standard-layout class</td>
<td class="full" align="center">Clang 7</td>
</tr>
<tr id="2121">
<td><a href="https://cplusplus.github.io/CWG/issues/2121.html">2121</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.general">expr.prim.lambda.general</a>]</td>
<td>CD6</td>
<td>More flexible lambda syntax</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2122">
<td><a href="https://cplusplus.github.io/CWG/issues/2122.html">2122</a></td>
+ <td>[<a href="https://wg21.link/basic.lval">basic.lval</a>]</td>
<td>CD4</td>
<td>Glvalues of <TT>void</TT> type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2123">
<td><a href="https://cplusplus.github.io/CWG/issues/2123.html">2123</a></td>
+ <td>[<a href="https://wg21.link/stmt.dcl">stmt.dcl</a>]</td>
<td>open</td>
<td>Omitted constant initialization of local static variables</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2124">
<td><a href="https://cplusplus.github.io/CWG/issues/2124.html">2124</a></td>
+ <td>[<a href="https://wg21.link/defns.signature.member.templ">defns.signature.member.templ</a>]</td>
<td>CD4</td>
<td>Signature of constructor template</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2125">
<td><a href="https://cplusplus.github.io/CWG/issues/2125.html">2125</a></td>
+ <td>[<a href="https://wg21.link/class.copy.elision">class.copy.elision</a>]</td>
<td>NAD</td>
<td>Copy elision and comma operator</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2126">
<td><a href="https://cplusplus.github.io/CWG/issues/2126.html">2126</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++20</td>
<td>Lifetime-extended temporaries in constant expressions</td>
<td class="full" align="center">Clang 12</td>
</tr>
<tr class="open" id="2127">
<td><a href="https://cplusplus.github.io/CWG/issues/2127.html">2127</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial">temp.spec.partial</a>]</td>
<td>drafting</td>
<td>Partial specialization and nullptr</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2128">
<td><a href="https://cplusplus.github.io/CWG/issues/2128.html">2128</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>open</td>
<td>Imprecise rule for reference member initializer</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2129">
<td><a href="https://cplusplus.github.io/CWG/issues/2129.html">2129</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD4</td>
<td>Non-object prvalues and constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2130">
<td><a href="https://cplusplus.github.io/CWG/issues/2130.html">2130</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD4</td>
<td>Over-aligned types in <I>new-expression</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2131">
<td><a href="https://cplusplus.github.io/CWG/issues/2131.html">2131</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>drafting</td>
<td>Ambiguity with <I>opaque-enum-declaration</I></td>
<td align="center">Not resolved</td>
</tr>
<tr id="2132">
<td><a href="https://cplusplus.github.io/CWG/issues/2132.html">2132</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>NAD</td>
<td>Deprecated default generated copy constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2133">
<td><a href="https://cplusplus.github.io/CWG/issues/2133.html">2133</a></td>
+ <td>[<a href="https://wg21.link/conv.fctptr">conv.fctptr</a>]</td>
<td>CD5</td>
<td>Converting <TT>std::nullptr_t</TT> to <TT>bool</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2134">
<td><a href="https://cplusplus.github.io/CWG/issues/2134.html">2134</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.general">expr.prim.general</a>]</td>
<td>NAD</td>
<td>Objectless references to non-static member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2135">
<td><a href="https://cplusplus.github.io/CWG/issues/2135.html">2135</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>NAD</td>
<td><I>mem-initializer</I>s for virtual bases of abstract classes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2136">
<td><a href="https://cplusplus.github.io/CWG/issues/2136.html">2136</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>NAD</td>
<td>Argument-dependent lookup and initializer lists</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2137">
<td><a href="https://cplusplus.github.io/CWG/issues/2137.html">2137</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD4</td>
<td>List-initialization from object of same type</td>
<td class="full" align="center">Clang 20</td>
</tr>
<tr id="2138">
<td><a href="https://cplusplus.github.io/CWG/issues/2138.html">2138</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>NAD</td>
<td>Explicit member specialization vs implicit instantiation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2139">
<td><a href="https://cplusplus.github.io/CWG/issues/2139.html">2139</a></td>
+ <td>[<a href="https://wg21.link/conv.fpint">conv.fpint</a>]</td>
<td>NAD</td>
<td>Floating-point requirements for integer representation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2140">
<td><a href="https://cplusplus.github.io/CWG/issues/2140.html">2140</a></td>
+ <td>[<a href="https://wg21.link/conv.lval">conv.lval</a>]</td>
<td>CD4</td>
<td>Lvalue-to-rvalue conversion of <TT>std::nullptr_t</TT></td>
<td class="full" align="center">Clang 9</td>
</tr>
<tr id="2141">
<td><a href="https://cplusplus.github.io/CWG/issues/2141.html">2141</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD4</td>
<td>Ambiguity in <I>new-expression</I> with <I>elaborated-type-specifier</I></td>
<td class="full" align="center">Clang 17</td>
</tr>
<tr id="2142">
<td><a href="https://cplusplus.github.io/CWG/issues/2142.html">2142</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>NAD</td>
<td>Missing definition of associated classes and namespaces</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2143">
<td><a href="https://cplusplus.github.io/CWG/issues/2143.html">2143</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>C++17</td>
<td>Value-dependency via injected-class-name</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2144">
<td><a href="https://cplusplus.github.io/CWG/issues/2144.html">2144</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.general">dcl.fct.def.general</a>]</td>
<td>CD7</td>
<td>Function/variable declaration ambiguity</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2145">
<td><a href="https://cplusplus.github.io/CWG/issues/2145.html">2145</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.general">dcl.fct.def.general</a>]</td>
<td>CD4</td>
<td>Parenthesized declarator in function definition</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2146">
<td><a href="https://cplusplus.github.io/CWG/issues/2146.html">2146</a></td>
+ <td>[<a href="https://wg21.link/intro.execution">intro.execution</a>]</td>
<td>CD4</td>
<td>Scalar object vs memory location in definition of &#8220;unsequenced&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2147">
<td><a href="https://cplusplus.github.io/CWG/issues/2147.html">2147</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>CD4</td>
<td>Initializer-list arguments and pack deduction</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2148">
<td><a href="https://cplusplus.github.io/CWG/issues/2148.html">2148</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>drafting</td>
<td>Thread storage duration and order of initialization</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2149">
<td><a href="https://cplusplus.github.io/CWG/issues/2149.html">2149</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>CD7</td>
<td>Brace elision and array length deduction</td>
<td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="2150">
<td><a href="https://cplusplus.github.io/CWG/issues/2150.html">2150</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD3</td>
<td>Initializer list array lifetime</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2151">
<td><a href="https://cplusplus.github.io/CWG/issues/2151.html">2151</a></td>
+ <td>[<a href="https://wg21.link/intro.object">intro.object</a>]</td>
<td>CD4</td>
<td>Exception object is not created</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2152">
<td><a href="https://cplusplus.github.io/CWG/issues/2152.html">2152</a></td>
+ <td>[<a href="https://wg21.link/lex.ext">lex.ext</a>]</td>
<td>NAD</td>
<td>Can an alternative token be used as a <I>ud-suffix</I>?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2153">
<td><a href="https://cplusplus.github.io/CWG/issues/2153.html">2153</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD4</td>
<td><I>pure-specifier</I> in friend declaration</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2154">
<td><a href="https://cplusplus.github.io/CWG/issues/2154.html">2154</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD4</td>
<td>Ambiguity of <I>pure-specifier</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2155">
<td><a href="https://cplusplus.github.io/CWG/issues/2155.html">2155</a></td>
+ <td>[<a href="https://wg21.link/namespace.memdef">namespace.memdef</a>]</td>
<td>C++17</td>
<td>Defining classes and enumerations via <I>using-declaration</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2156">
<td><a href="https://cplusplus.github.io/CWG/issues/2156.html">2156</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>CD4</td>
<td>Definition of enumeration declared by <I>using-declaration</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2157">
<td><a href="https://cplusplus.github.io/CWG/issues/2157.html">2157</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.elab">dcl.type.elab</a>]</td>
<td>CD4</td>
<td>Further disambiguation of enumeration <I>elaborated-type-specifier</I></td>
<td class="full" align="center">Clang 11</td>
</tr>
<tr class="open" id="2158">
<td><a href="https://cplusplus.github.io/CWG/issues/2158.html">2158</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>drafting</td>
<td>Polymorphic behavior during destruction</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2159">
<td><a href="https://cplusplus.github.io/CWG/issues/2159.html">2159</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>NAD</td>
<td>Lambda capture and local <TT>thread_local</TT> variables</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2160">
<td><a href="https://cplusplus.github.io/CWG/issues/2160.html">2160</a></td>
+ <td>[<a href="https://wg21.link/temp.func.order">temp.func.order</a>]</td>
<td>open</td>
<td>Issues with partial ordering</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2161">
<td><a href="https://cplusplus.github.io/CWG/issues/2161.html">2161</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>NAD</td>
<td>Explicit instantiation declaration and &#8220;preceding initialization&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2162">
<td><a href="https://cplusplus.github.io/CWG/issues/2162.html">2162</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>CD3</td>
<td>Capturing <TT>this</TT> by reference</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2163">
<td><a href="https://cplusplus.github.io/CWG/issues/2163.html">2163</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>CD4</td>
<td>Labels in <TT>constexpr</TT> functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2164">
<td><a href="https://cplusplus.github.io/CWG/issues/2164.html">2164</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.hiding">basic.scope.hiding</a>]</td>
<td>CD5</td>
<td>Name hiding and <I>using-directive</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2165">
<td><a href="https://cplusplus.github.io/CWG/issues/2165.html">2165</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.declarative">basic.scope.declarative</a>]</td>
<td>CD6</td>
<td>Namespaces, declarative regions, and translation units</td>
<td class="na" align="center">N/A</td>
</tr>
<tr class="open" id="2166">
<td><a href="https://cplusplus.github.io/CWG/issues/2166.html">2166</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>drafting</td>
<td>Unclear meaning of &#8220;undefined <TT>constexpr</TT> function&#8221;</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2167">
<td><a href="https://cplusplus.github.io/CWG/issues/2167.html">2167</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD4</td>
<td>Non-member references with lifetimes within the current evaluation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2168">
<td><a href="https://cplusplus.github.io/CWG/issues/2168.html">2168</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>review</td>
<td>Narrowing conversions and +/- infinity</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2169">
<td><a href="https://cplusplus.github.io/CWG/issues/2169.html">2169</a></td>
+ <td>[<a href="https://wg21.link/over.ics.list">over.ics.list</a>]</td>
<td>open</td>
<td>Narrowing conversions and overload resolution</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2170">
<td><a href="https://cplusplus.github.io/CWG/issues/2170.html">2170</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD5</td>
<td>Unclear definition of odr-use for arrays</td>
<td class="full" align="center">Clang 9</td>
</tr>
<tr id="2171">
<td><a href="https://cplusplus.github.io/CWG/issues/2171.html">2171</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>CD4</td>
<td>Triviality of copy constructor with less-qualified parameter</td>
<td class="full" align="center">Clang 15</td>
</tr>
<tr class="open" id="2172">
<td><a href="https://cplusplus.github.io/CWG/issues/2172.html">2172</a></td>
+ <td>[<a href="https://wg21.link/except.handle">except.handle</a>]</td>
<td>drafting</td>
<td>Multiple exceptions with one exception object</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2173">
<td><a href="https://cplusplus.github.io/CWG/issues/2173.html">2173</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial">temp.spec.partial</a>]</td>
<td>open</td>
<td>Partial specialization with non-deduced contexts</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2174">
<td><a href="https://cplusplus.github.io/CWG/issues/2174.html">2174</a></td>
+ <td>[<a href="https://wg21.link/temp.friend">temp.friend</a>]</td>
<td>C++17</td>
<td>Unclear rules for friend definitions in templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2175">
<td><a href="https://cplusplus.github.io/CWG/issues/2175.html">2175</a></td>
+ <td>[<a href="https://wg21.link/dcl.ambig.res">dcl.ambig.res</a>]</td>
<td>CD4</td>
<td>Ambiguity with attribute in conversion operator declaration</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2176">
<td><a href="https://cplusplus.github.io/CWG/issues/2176.html">2176</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>CD4</td>
<td>Destroying the returned object when a destructor throws</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2177">
<td><a href="https://cplusplus.github.io/CWG/issues/2177.html">2177</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD5</td>
<td>Placement <TT>operator delete</TT> and parameter copies</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2178">
<td><a href="https://cplusplus.github.io/CWG/issues/2178.html">2178</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>NAD</td>
<td>Substitution of dependent template arguments in default template arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2179">
<td><a href="https://cplusplus.github.io/CWG/issues/2179.html">2179</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial.general">temp.spec.partial.general</a>]</td>
<td>drafting</td>
<td>Required diagnostic for partial specialization after first use</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2180">
<td><a href="https://cplusplus.github.io/CWG/issues/2180.html">2180</a></td>
+ <td>[<a href="https://wg21.link/class.copy.assign">class.copy.assign</a>]</td>
<td>CD4</td>
<td>Virtual bases in destructors and defaulted assignment operators</td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="2181">
<td><a href="https://cplusplus.github.io/CWG/issues/2181.html">2181</a></td>
+ <td>[<a href="https://wg21.link/implimits">implimits</a>]</td>
<td>C++20</td>
<td>Normative requirements in an informative Annex</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2182">
<td><a href="https://cplusplus.github.io/CWG/issues/2182.html">2182</a></td>
+ <td>[<a href="https://wg21.link/expr.add">expr.add</a>]</td>
<td>drafting</td>
<td>Pointer arithmetic in array-like containers</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2183">
<td><a href="https://cplusplus.github.io/CWG/issues/2183.html">2183</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>NAD</td>
<td>Problems in description of potential exceptions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2184">
<td><a href="https://cplusplus.github.io/CWG/issues/2184.html">2184</a></td>
+ <td>[<a href="https://wg21.link/diff.expr">diff.expr</a>]</td>
<td>CD4</td>
<td>Missing C compatibility entry for decrement of <TT>bool</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2185">
<td><a href="https://cplusplus.github.io/CWG/issues/2185.html">2185</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>CD6</td>
<td>Cv-qualified numeric types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2186">
<td><a href="https://cplusplus.github.io/CWG/issues/2186.html">2186</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++20</td>
<td>Unclear point that &#8220;preceding initialization&#8221; must precede</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2187">
<td><a href="https://cplusplus.github.io/CWG/issues/2187.html">2187</a></td>
+ <td>[<a href="https://wg21.link/class.protected">class.protected</a>]</td>
<td>drafting</td>
<td>Protected members and access via <I>qualified-id</I></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2188">
<td><a href="https://cplusplus.github.io/CWG/issues/2188.html">2188</a></td>
+ <td>[<a href="https://wg21.link/class.mem.general">class.mem.general</a>]</td>
<td>open</td>
<td><I>empty-declaration</I> grammar ambiguity</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2189">
<td><a href="https://cplusplus.github.io/CWG/issues/2189.html">2189</a></td>
+ <td>[<a href="https://wg21.link/over.call.object">over.call.object</a>]</td>
<td>open</td>
<td>Surrogate call template</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2190">
<td><a href="https://cplusplus.github.io/CWG/issues/2190.html">2190</a></td>
+ <td>[<a href="https://wg21.link/cpp.cond">cpp.cond</a>]</td>
<td>open</td>
<td>Insufficient specification of <TT>__has_include</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr id="2191">
<td><a href="https://cplusplus.github.io/CWG/issues/2191.html">2191</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>C++17</td>
<td>Incorrect result for <TT>noexcept(typeid(v))</TT></td>
<td class="full" align="center">Clang 19</td>
</tr>
<tr class="open" id="2192">
<td><a href="https://cplusplus.github.io/CWG/issues/2192.html">2192</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>open</td>
<td>Constant expressions and order-of-eval undefined behavior</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2193">
<td><a href="https://cplusplus.github.io/CWG/issues/2193.html">2193</a></td>
+ <td>[<a href="https://wg21.link/numeric.limits.members">numeric.limits.members</a>]</td>
<td>NAD</td>
<td><TT>numeric_limits&lt;int&gt;::radix</TT> and <TT>digits</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2194">
<td><a href="https://cplusplus.github.io/CWG/issues/2194.html">2194</a></td>
+ <td>[<a href="https://wg21.link/over.match.list">over.match.list</a>]</td>
<td>drafting</td>
<td>Impossible case in list initialization</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2195">
<td><a href="https://cplusplus.github.io/CWG/issues/2195.html">2195</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.cv">dcl.type.cv</a>]</td>
<td>open</td>
<td>Unsolicited reading of trailing volatile members</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2196">
<td><a href="https://cplusplus.github.io/CWG/issues/2196.html">2196</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>C++17</td>
<td>Zero-initialization with virtual base classes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2197">
<td><a href="https://cplusplus.github.io/CWG/issues/2197.html">2197</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>C++17</td>
<td>Overload resolution and deleted special member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2198">
<td><a href="https://cplusplus.github.io/CWG/issues/2198.html">2198</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>C++17</td>
<td>Linkage of enumerators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2199">
<td><a href="https://cplusplus.github.io/CWG/issues/2199.html">2199</a></td>
+ <td>[<a href="https://wg21.link/dcl.typedef">dcl.typedef</a>]</td>
<td>CD6</td>
<td>Typedefs and tags</td>
<td class="full" align="center">Clang 3.8</td>
</tr>
<tr id="2200">
<td><a href="https://cplusplus.github.io/CWG/issues/2200.html">2200</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.explicit">temp.arg.explicit</a>]</td>
<td>NAD</td>
<td>Conversions in template argument deduction</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2201">
<td><a href="https://cplusplus.github.io/CWG/issues/2201.html">2201</a></td>
+ <td>[<a href="https://wg21.link/basic.type.qualifier">basic.type.qualifier</a>]</td>
<td>C++17</td>
<td>Cv-qualification of array types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2202">
<td><a href="https://cplusplus.github.io/CWG/issues/2202.html">2202</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>drafting</td>
<td>When does default argument instantiation occur?</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2203">
<td><a href="https://cplusplus.github.io/CWG/issues/2203.html">2203</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>drafting</td>
<td>Defaulted copy/move constructors and UDCs</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2204">
<td><a href="https://cplusplus.github.io/CWG/issues/2204.html">2204</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>NAD</td>
<td>Naming delegated constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2205">
<td><a href="https://cplusplus.github.io/CWG/issues/2205.html">2205</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.grammar">dcl.attr.grammar</a>]</td>
<td>C++17</td>
<td>Restrictions on use of <TT>alignas</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2206">
<td><a href="https://cplusplus.github.io/CWG/issues/2206.html">2206</a></td>
+ <td>[<a href="https://wg21.link/expr">expr</a>]</td>
<td>C++17</td>
<td>Composite type of object and function pointers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2207">
<td><a href="https://cplusplus.github.io/CWG/issues/2207.html">2207</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.allocation">basic.stc.dynamic.allocation</a>]</td>
<td>CD5</td>
<td>Alignment of allocation function return value</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2208">
<td><a href="https://cplusplus.github.io/CWG/issues/2208.html">2208</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>NAD</td>
<td><I>static_assert-declaration</I> does not declare a member</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2209">
<td><a href="https://cplusplus.github.io/CWG/issues/2209.html">2209</a></td>
+ <td>[<a href="https://wg21.link/except.ctor">except.ctor</a>]</td>
<td>NAD</td>
<td>Destruction of constructed array elements</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2210">
<td><a href="https://cplusplus.github.io/CWG/issues/2210.html">2210</a></td>
+ <td>[<a href="https://wg21.link/except.ctor">except.ctor</a>]</td>
<td>NAD</td>
<td>Principal/target constructor confusion</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2211">
<td><a href="https://cplusplus.github.io/CWG/issues/2211.html">2211</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>C++17</td>
<td>Hiding by lambda captures and parameters</td>
<td class="full" align="center">Clang 8</td>
</tr>
<tr id="2212">
<td><a href="https://cplusplus.github.io/CWG/issues/2212.html">2212</a></td>
+ <td>[<a href="https://wg21.link/dcl.typedef">dcl.typedef</a>]</td>
<td>CD5</td>
<td>Typedef changing linkage after use</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2213">
<td><a href="https://cplusplus.github.io/CWG/issues/2213.html">2213</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.elab">dcl.type.elab</a>]</td>
<td>CD6</td>
<td>Forward declaration of partial specializations</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="2214">
<td><a href="https://cplusplus.github.io/CWG/issues/2214.html">2214</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>C++17</td>
<td>Missing requirement on representation of integer values</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2215">
<td><a href="https://cplusplus.github.io/CWG/issues/2215.html">2215</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>C++17</td>
<td>Redundant description of language linkage in function call</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2216">
<td><a href="https://cplusplus.github.io/CWG/issues/2216.html">2216</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>NAD</td>
<td>Exception specifications in unevaluated contexts</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2217">
<td><a href="https://cplusplus.github.io/CWG/issues/2217.html">2217</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>NAD</td>
<td><TT>constexpr</TT> constructors for non-literal types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2218">
<td><a href="https://cplusplus.github.io/CWG/issues/2218.html">2218</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup">basic.lookup</a>]</td>
<td>C++17</td>
<td>Ambiguity and namespace aliases</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2219">
<td><a href="https://cplusplus.github.io/CWG/issues/2219.html">2219</a></td>
+ <td>[<a href="https://wg21.link/except.handle">except.handle</a>]</td>
<td>drafting</td>
<td>Dynamically-unreachable handlers</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2220">
<td><a href="https://cplusplus.github.io/CWG/issues/2220.html">2220</a></td>
+ <td>[<a href="https://wg21.link/stmt.ranged">stmt.ranged</a>]</td>
<td>C++17</td>
<td>Hiding index variable in range-based <TT>for</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2221">
<td><a href="https://cplusplus.github.io/CWG/issues/2221.html">2221</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>CD6</td>
<td>Copying volatile objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2222">
<td><a href="https://cplusplus.github.io/CWG/issues/2222.html">2222</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>drafting</td>
<td>Additional contexts where instantiation is not required</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2223">
<td><a href="https://cplusplus.github.io/CWG/issues/2223.html">2223</a></td>
+ <td>[<a href="https://wg21.link/dcl.align">dcl.align</a>]</td>
<td>drafting</td>
<td>Multiple <TT>alignas</TT> specifiers</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2224">
<td><a href="https://cplusplus.github.io/CWG/issues/2224.html">2224</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>C++17</td>
<td>Member subobjects and base-class casts</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2225">
<td><a href="https://cplusplus.github.io/CWG/issues/2225.html">2225</a></td>
+ <td>[<a href="https://wg21.link/expr.reinterpret.cast">expr.reinterpret.cast</a>]</td>
<td>NAD</td>
<td><TT>reinterpret_cast</TT> to same floating-point type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2226">
<td><a href="https://cplusplus.github.io/CWG/issues/2226.html">2226</a></td>
+ <td>[<a href="https://wg21.link/expr.cond">expr.cond</a>]</td>
<td>CD5</td>
<td>Xvalues vs lvalues in conditional expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2227">
<td><a href="https://cplusplus.github.io/CWG/issues/2227.html">2227</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>CD5</td>
<td>Destructor access and default member initializers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2228">
<td><a href="https://cplusplus.github.io/CWG/issues/2228.html">2228</a></td>
+ <td>[<a href="https://wg21.link/dcl.ambig.res">dcl.ambig.res</a>]</td>
<td>review</td>
<td>Ambiguity resolution for cast to function type</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2229">
<td><a href="https://cplusplus.github.io/CWG/issues/2229.html">2229</a></td>
+ <td>[<a href="https://wg21.link/class.bit">class.bit</a>]</td>
<td>CD5</td>
<td>Volatile unnamed bit-fields</td>
<td class="full" align="center">Clang 7</td>
</tr>
<tr id="2230">
<td><a href="https://cplusplus.github.io/CWG/issues/2230.html">2230</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>NAD</td>
<td>Linkage of <TT>extern "C"</TT> function in unnamed namespace</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2231">
<td><a href="https://cplusplus.github.io/CWG/issues/2231.html">2231</a></td>
+ <td>[<a href="https://wg21.link/expr.ref">expr.ref</a>]</td>
<td>NAD</td>
<td>Class member access to static data member template</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2232">
<td><a href="https://cplusplus.github.io/CWG/issues/2232.html">2232</a></td>
+ <td>[<a href="https://wg21.link/dcl.stc">dcl.stc</a>]</td>
<td>open</td>
<td><TT>thread_local</TT> anonymous unions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2233">
<td><a href="https://cplusplus.github.io/CWG/issues/2233.html">2233</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>CD5</td>
<td>Function parameter packs following default arguments</td>
<td class="full" align="center">Clang 11</td>
</tr>
<tr id="2234">
<td><a href="https://cplusplus.github.io/CWG/issues/2234.html">2234</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>CD5</td>
<td>Missing rules for <I>simple-template-id</I> as <I>class-name</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2235">
<td><a href="https://cplusplus.github.io/CWG/issues/2235.html">2235</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.partial">temp.deduct.partial</a>]</td>
<td>CD5</td>
<td>Partial ordering and non-dependent types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2236">
<td><a href="https://cplusplus.github.io/CWG/issues/2236.html">2236</a></td>
+ <td>[<a href="https://wg21.link/temp.alias">temp.alias</a>]</td>
<td>drafting</td>
<td>When is an alias template specialization dependent?</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2237">
<td><a href="https://cplusplus.github.io/CWG/issues/2237.html">2237</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>CD5</td>
<td>Can a <I>template-id</I> name a constructor?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2238">
<td><a href="https://cplusplus.github.io/CWG/issues/2238.html">2238</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.allocation">basic.stc.dynamic.allocation</a>]</td>
<td>NAD</td>
<td>Contradictory alignment requirements for allocation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2239">
<td><a href="https://cplusplus.github.io/CWG/issues/2239.html">2239</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>NAD</td>
<td>Sized deallocation with a trivial destructor</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2240">
<td><a href="https://cplusplus.github.io/CWG/issues/2240.html">2240</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>NAD</td>
<td><TT>this</TT> is not odr-used in a constant expression</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2241">
<td><a href="https://cplusplus.github.io/CWG/issues/2241.html">2241</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>CD5</td>
<td>Overload resolution is not invoked with a single function</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2242">
<td><a href="https://cplusplus.github.io/CWG/issues/2242.html">2242</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>C++23</td>
<td>ODR violation with constant initialization possibly omitted</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2243">
<td><a href="https://cplusplus.github.io/CWG/issues/2243.html">2243</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>drafting</td>
<td>Incorrect use of implicit conversion sequence</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2244">
<td><a href="https://cplusplus.github.io/CWG/issues/2244.html">2244</a></td>
+ <td>[<a href="https://wg21.link/class.protected">class.protected</a>]</td>
<td>open</td>
<td>Base class access in aggregate initialization</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2245">
<td><a href="https://cplusplus.github.io/CWG/issues/2245.html">2245</a></td>
+ <td>[<a href="https://wg21.link/temp.point">temp.point</a>]</td>
<td>drafting</td>
<td>Point of instantiation of incomplete class template</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2246">
<td><a href="https://cplusplus.github.io/CWG/issues/2246.html">2246</a></td>
+ <td>[<a href="https://wg21.link/class.access.base">class.access.base</a>]</td>
<td>drafting</td>
<td>Access of indirect virtual base class constructors</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2247">
<td><a href="https://cplusplus.github.io/CWG/issues/2247.html">2247</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>C++17</td>
<td>Lambda capture and variable argument list</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2248">
<td><a href="https://cplusplus.github.io/CWG/issues/2248.html">2248</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>C++17</td>
<td>Problems with sized delete</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2249">
<td><a href="https://cplusplus.github.io/CWG/issues/2249.html">2249</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.id.unqual">expr.prim.id.unqual</a>]</td>
<td>CD5</td>
<td><I>identifier</I>s and <I>id-expression</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2250">
<td><a href="https://cplusplus.github.io/CWG/issues/2250.html">2250</a></td>
+ <td>[<a href="https://wg21.link/temp.point">temp.point</a>]</td>
<td>open</td>
<td>Implicit instantiation, destruction, and TUs</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2251">
<td><a href="https://cplusplus.github.io/CWG/issues/2251.html">2251</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>C++17</td>
<td>Unreachable enumeration list-initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2252">
<td><a href="https://cplusplus.github.io/CWG/issues/2252.html">2252</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD7</td>
<td>Enumeration list-initialization from the same type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2253">
<td><a href="https://cplusplus.github.io/CWG/issues/2253.html">2253</a></td>
+ <td>[<a href="https://wg21.link/class.bit">class.bit</a>]</td>
<td>CD5</td>
<td>Unnamed bit-fields and zero-initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2254">
<td><a href="https://cplusplus.github.io/CWG/issues/2254.html">2254</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD5</td>
<td>Standard-layout classes and bit-fields</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2255">
<td><a href="https://cplusplus.github.io/CWG/issues/2255.html">2255</a></td>
+ <td>[<a href="https://wg21.link/temp.spec">temp.spec</a>]</td>
<td>CD5</td>
<td>Instantiated static data member templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2256">
<td><a href="https://cplusplus.github.io/CWG/issues/2256.html">2256</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>CD5</td>
<td>Lifetime of trivially-destructible objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2257">
<td><a href="https://cplusplus.github.io/CWG/issues/2257.html">2257</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>CD5</td>
<td>Lifetime extension of references vs exceptions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2258">
<td><a href="https://cplusplus.github.io/CWG/issues/2258.html">2258</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>open</td>
<td>Storage deallocation during period of destruction</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2259">
<td><a href="https://cplusplus.github.io/CWG/issues/2259.html">2259</a></td>
+ <td>[<a href="https://wg21.link/dcl.ambig.res">dcl.ambig.res</a>]</td>
<td>C++17</td>
<td>Unclear context describing ambiguity</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2260">
<td><a href="https://cplusplus.github.io/CWG/issues/2260.html">2260</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>CD5</td>
<td>Explicit specializations of deleted member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2261">
<td><a href="https://cplusplus.github.io/CWG/issues/2261.html">2261</a></td>
+ <td>[<a href="https://wg21.link/temp.friend">temp.friend</a>]</td>
<td>extension</td>
<td>Explicit instantiation of in-class <TT>friend</TT> definition</td>
<td align="center">Extension</td>
</tr>
<tr id="2262">
<td><a href="https://cplusplus.github.io/CWG/issues/2262.html">2262</a></td>
+ <td>[<a href="https://wg21.link/dcl.asm">dcl.asm</a>]</td>
<td>C++17</td>
<td>Attributes for <I>asm-definition</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2263">
<td><a href="https://cplusplus.github.io/CWG/issues/2263.html">2263</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>drafting</td>
<td>Default argument instantiation for <TT>friend</TT>s</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2264">
<td><a href="https://cplusplus.github.io/CWG/issues/2264.html">2264</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>drafting</td>
<td>Memberwise copying with indeterminate value</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2265">
<td><a href="https://cplusplus.github.io/CWG/issues/2265.html">2265</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>drafting</td>
<td>Delayed pack expansion and member redeclarations</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2266">
<td><a href="https://cplusplus.github.io/CWG/issues/2266.html">2266</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>CD5</td>
<td>Has dependent type vs is type-dependent</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2267">
<td><a href="https://cplusplus.github.io/CWG/issues/2267.html">2267</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD5</td>
<td>Copy-initialization of temporary in reference direct-initialization</td>
<td class="none" align="center">No</td>
</tr>
<tr id="2268">
<td><a href="https://cplusplus.github.io/CWG/issues/2268.html">2268</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>C++17</td>
<td>Unions with mutable members in constant expressions revisited</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2269">
<td><a href="https://cplusplus.github.io/CWG/issues/2269.html">2269</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>dup</td>
<td>Additional recursive references in aggregate DMIs</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2270">
<td><a href="https://cplusplus.github.io/CWG/issues/2270.html">2270</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>NAD</td>
<td>Non-inline functions and explicit instantiation declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2271">
<td><a href="https://cplusplus.github.io/CWG/issues/2271.html">2271</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>C++17</td>
<td>Aliasing <TT>this</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2272">
<td><a href="https://cplusplus.github.io/CWG/issues/2272.html">2272</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>C++17</td>
<td>Implicit initialization of aggregate members of reference type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2273">
<td><a href="https://cplusplus.github.io/CWG/issues/2273.html">2273</a></td>
+ <td>[<a href="https://wg21.link/class.ctor">class.ctor</a>]</td>
<td>CD5</td>
<td>Inheriting constructors vs implicit default constructor</td>
<td class="full" align="center">Clang 3.3</td>
</tr>
<tr id="2274">
<td><a href="https://cplusplus.github.io/CWG/issues/2274.html">2274</a></td>
+ <td>[<a href="https://wg21.link/stmt.if">stmt.if</a>]</td>
<td>NAD</td>
<td>Generic lambda capture vs constexpr if</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2275">
<td><a href="https://cplusplus.github.io/CWG/issues/2275.html">2275</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.expr">temp.dep.expr</a>]</td>
<td>drafting</td>
<td>Type-dependence of function template</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2276">
<td><a href="https://cplusplus.github.io/CWG/issues/2276.html">2276</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.constexpr">temp.dep.constexpr</a>]</td>
<td>C++17</td>
<td>Dependent <TT>noexcept</TT> and function type-dependence</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2277">
<td><a href="https://cplusplus.github.io/CWG/issues/2277.html">2277</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>CD5</td>
<td>Ambiguity inheriting constructors with default arguments</td>
<td class="partial" align="center">Partial</td>
</tr>
<tr id="2278">
<td><a href="https://cplusplus.github.io/CWG/issues/2278.html">2278</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD5</td>
<td>Copy elision in constant expressions reconsidered</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2279">
<td><a href="https://cplusplus.github.io/CWG/issues/2279.html">2279</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.grammar">dcl.attr.grammar</a>]</td>
<td>NAD</td>
<td>Multiple <I>attribute-specifier</I>s in one <I>attribute-list</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2280">
<td><a href="https://cplusplus.github.io/CWG/issues/2280.html">2280</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>C++20</td>
<td>Matching a usual deallocation function with placement new</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2281">
<td><a href="https://cplusplus.github.io/CWG/issues/2281.html">2281</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>drafting</td>
<td>Consistency of aligned <TT>operator delete</TT> replacement</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2282">
<td><a href="https://cplusplus.github.io/CWG/issues/2282.html">2282</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>C++20</td>
<td>Consistency with mismatched aligned/non-over-aligned allocation/deallocation functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2283">
<td><a href="https://cplusplus.github.io/CWG/issues/2283.html">2283</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>CD7</td>
<td>Missing complete type requirements</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2284">
<td><a href="https://cplusplus.github.io/CWG/issues/2284.html">2284</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>open</td>
<td>Sequencing of <I>braced-init-list</I> arguments</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2285">
<td><a href="https://cplusplus.github.io/CWG/issues/2285.html">2285</a></td>
+ <td>[<a href="https://wg21.link/dcl.struct.bind">dcl.struct.bind</a>]</td>
<td>CD5</td>
<td>Issues with structured bindings</td>
<td class="full" align="center">Clang 4</td>
</tr>
<tr id="2286">
<td><a href="https://cplusplus.github.io/CWG/issues/2286.html">2286</a></td>
+ <td>[<a href="https://wg21.link/expr.assign">expr.assign</a>]</td>
<td>NAD</td>
<td>Assignment evaluation order</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2287">
<td><a href="https://cplusplus.github.io/CWG/issues/2287.html">2287</a></td>
+ <td>[<a href="https://wg21.link/basic.compound">basic.compound</a>]</td>
<td>CD5</td>
<td>Pointer-interconvertibility in non-standard-layout unions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2288">
<td><a href="https://cplusplus.github.io/CWG/issues/2288.html">2288</a></td>
+ <td>[<a href="https://wg21.link/dcl.pre">dcl.pre</a>]</td>
<td>NAD</td>
<td>Contradictory optionality in <I>simple-declaration</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2289">
<td><a href="https://cplusplus.github.io/CWG/issues/2289.html">2289</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.declarative">basic.scope.declarative</a>]</td>
<td>CD5</td>
<td>Uniqueness of structured binding names</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2290">
<td><a href="https://cplusplus.github.io/CWG/issues/2290.html">2290</a></td>
+ <td>[<a href="https://wg21.link/over.match.funcs">over.match.funcs</a>]</td>
<td>CD5</td>
<td>Unclear specification for overload resolution and deleted special member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2291">
<td><a href="https://cplusplus.github.io/CWG/issues/2291.html">2291</a></td>
+ <td>[<a href="https://wg21.link/over.best.ics">over.best.ics</a>]</td>
<td>dup</td>
<td>Implicit conversion sequences in non-call contexts</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2292">
<td><a href="https://cplusplus.github.io/CWG/issues/2292.html">2292</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>CD5</td>
<td><I>simple-template-id</I> is ambiguous between <I>class-name</I> and <I>type-name</I></td>
<td class="full" align="center">Clang 9</td>
</tr>
<tr id="2293">
<td><a href="https://cplusplus.github.io/CWG/issues/2293.html">2293</a></td>
+ <td>[<a href="https://wg21.link/class">class</a>]</td>
<td>CD5</td>
<td>Requirements for <I>simple-template-id</I> used as a <I>class-name</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2294">
<td><a href="https://cplusplus.github.io/CWG/issues/2294.html">2294</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.expr">temp.dep.expr</a>]</td>
<td>CD5</td>
<td>Dependent <TT>auto</TT> static data members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2295">
<td><a href="https://cplusplus.github.io/CWG/issues/2295.html">2295</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>CD5</td>
<td>Aggregates with deleted defaulted constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2296">
<td><a href="https://cplusplus.github.io/CWG/issues/2296.html">2296</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>open</td>
<td>Are default argument instantiation failures in the &#8220;immediate context&#8221;?</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2297">
<td><a href="https://cplusplus.github.io/CWG/issues/2297.html">2297</a></td>
+ <td>[<a href="https://wg21.link/intro.races">intro.races</a>]</td>
<td>open</td>
<td>Unclear specification of atomic operations</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2298">
<td><a href="https://cplusplus.github.io/CWG/issues/2298.html">2298</a></td>
+ <td>[<a href="https://wg21.link/intro.races">intro.races</a>]</td>
<td>open</td>
<td>Actions and expression evaluation</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2299">
<td><a href="https://cplusplus.github.io/CWG/issues/2299.html">2299</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>CD5</td>
<td><TT>constexpr</TT> vararg functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2300">
<td><a href="https://cplusplus.github.io/CWG/issues/2300.html">2300</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD5</td>
<td>Lambdas in multiple definitions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2301">
<td><a href="https://cplusplus.github.io/CWG/issues/2301.html">2301</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>open</td>
<td>Value-initialization and constexpr constructor evaluation</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2302">
<td><a href="https://cplusplus.github.io/CWG/issues/2302.html">2302</a></td>
+ <td>[<a href="https://wg21.link/expr.eq">expr.eq</a>]</td>
<td>NAD</td>
<td>Address comparison between different member subobjects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2303">
<td><a href="https://cplusplus.github.io/CWG/issues/2303.html">2303</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>CD5</td>
<td>Partial ordering and recursive variadic inheritance</td>
<td class="full" align="center">Clang 12</td>
</tr>
<tr id="2304">
<td><a href="https://cplusplus.github.io/CWG/issues/2304.html">2304</a></td>
+ <td>[<a href="https://wg21.link/over.best.ics">over.best.ics</a>]</td>
<td>NAD</td>
<td>Incomplete type vs overload resolution</td>
<td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="2305">
<td><a href="https://cplusplus.github.io/CWG/issues/2305.html">2305</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>CD5</td>
<td>Explicit instantiation of constexpr or inline variable template</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2306">
<td><a href="https://cplusplus.github.io/CWG/issues/2306.html">2306</a></td>
+ <td>[<a href="https://wg21.link/temp.friend">temp.friend</a>]</td>
<td>NAD</td>
<td>Nested friend templates of class templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2307">
<td><a href="https://cplusplus.github.io/CWG/issues/2307.html">2307</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>CD5</td>
<td>Unclear definition of &#8220;equivalent to a nontype template parameter&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2308">
<td><a href="https://cplusplus.github.io/CWG/issues/2308.html">2308</a></td>
+ <td>[<a href="https://wg21.link/dcl.struct.bind">dcl.struct.bind</a>]</td>
<td>NAD</td>
<td>Structured bindings and lambda capture</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2309">
<td><a href="https://cplusplus.github.io/CWG/issues/2309.html">2309</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>CD5</td>
<td>Restrictions on nested statements within <TT>constexpr</TT> functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2310">
<td><a href="https://cplusplus.github.io/CWG/issues/2310.html">2310</a></td>
+ <td>[<a href="https://wg21.link/conv.ptr">conv.ptr</a>]</td>
<td>CD5</td>
<td>Type completeness and derived-to-base pointer conversions</td>
<td class="partial" align="center">Partial</td>
</tr>
<tr class="open" id="2311">
<td><a href="https://cplusplus.github.io/CWG/issues/2311.html">2311</a></td>
+ <td>[<a href="https://wg21.link/over.match.list">over.match.list</a>]</td>
<td>open</td>
<td>Missed case for guaranteed copy elision</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2312">
<td><a href="https://cplusplus.github.io/CWG/issues/2312.html">2312</a></td>
+ <td>[<a href="https://wg21.link/dcl.struct.bind">dcl.struct.bind</a>]</td>
<td>CD6</td>
<td>Structured bindings and <TT>mutable</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2313">
<td><a href="https://cplusplus.github.io/CWG/issues/2313.html">2313</a></td>
+ <td>[<a href="https://wg21.link/dcl.struct.bind">dcl.struct.bind</a>]</td>
<td>CD5</td>
<td>Redeclaration of structured binding reference variables</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2314">
<td><a href="https://cplusplus.github.io/CWG/issues/2314.html">2314</a></td>
+ <td>[<a href="https://wg21.link/dcl.struct.bind">dcl.struct.bind</a>]</td>
<td>dup</td>
<td>Structured bindings and lambda capture</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2315">
<td><a href="https://cplusplus.github.io/CWG/issues/2315.html">2315</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>CD5</td>
<td>What is the &#8220;corresponding special member&#8221; of a variant member?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2316">
<td><a href="https://cplusplus.github.io/CWG/issues/2316.html">2316</a></td>
+ <td>[<a href="https://wg21.link/expr.cond">expr.cond</a>]</td>
<td>drafting</td>
<td>Simplifying class conversions in conditional expressions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2317">
<td><a href="https://cplusplus.github.io/CWG/issues/2317.html">2317</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>CD5</td>
<td>Self-referential default member initializers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2318">
<td><a href="https://cplusplus.github.io/CWG/issues/2318.html">2318</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>CD5</td>
<td>Nondeduced contexts in deduction from a <I>braced-init-list</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2319">
<td><a href="https://cplusplus.github.io/CWG/issues/2319.html">2319</a></td>
+ <td>[<a href="https://wg21.link/over.best.ics">over.best.ics</a>]</td>
<td>drafting</td>
<td>Nested brace initialization from same type</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2320">
<td><a href="https://cplusplus.github.io/CWG/issues/2320.html">2320</a></td>
+ <td>[<a href="https://wg21.link/stmt.if">stmt.if</a>]</td>
<td>extension</td>
<td><TT>constexpr if</TT> and boolean conversions</td>
<td align="center">Extension</td>
</tr>
<tr id="2321">
<td><a href="https://cplusplus.github.io/CWG/issues/2321.html">2321</a></td>
+ <td>[<a href="https://wg21.link/expr.cond">expr.cond</a>]</td>
<td>CD5</td>
<td>Conditional operator and cv-qualified class prvalues</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2322">
<td><a href="https://cplusplus.github.io/CWG/issues/2322.html">2322</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>CD5</td>
<td>Substitution failure and lexical order</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2323">
<td><a href="https://cplusplus.github.io/CWG/issues/2323.html">2323</a></td>
+ <td>[<a href="https://wg21.link/basic.types">basic.types</a>]</td>
<td>C++20</td>
<td>Expunge POD</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2324">
<td><a href="https://cplusplus.github.io/CWG/issues/2324.html">2324</a></td>
+ <td>[<a href="https://wg21.link/intro.object">intro.object</a>]</td>
<td>drafting</td>
<td>Size of base class subobject</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2325">
<td><a href="https://cplusplus.github.io/CWG/issues/2325.html">2325</a></td>
+ <td>[<a href="https://wg21.link/intro.object">intro.object</a>]</td>
<td>drafting</td>
<td><TT>std::launder</TT> and reuse of character buffers</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2326">
<td><a href="https://cplusplus.github.io/CWG/issues/2326.html">2326</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>dup</td>
<td>Type deduction with initializer list containing ambiguous functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2327">
<td><a href="https://cplusplus.github.io/CWG/issues/2327.html">2327</a></td>
+ <td>[<a href="https://wg21.link/dcl.init">dcl.init</a>]</td>
<td>drafting</td>
<td>Copy elision for direct-initialization with a conversion function</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2328">
<td><a href="https://cplusplus.github.io/CWG/issues/2328.html">2328</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>drafting</td>
<td>Unclear presentation style of template argument deduction rules</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2329">
<td><a href="https://cplusplus.github.io/CWG/issues/2329.html">2329</a></td>
+ <td>[<a href="https://wg21.link/class.copy.assign">class.copy.assign</a>]</td>
<td>open</td>
<td>Virtual base classes and generated assignment operators</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2330">
<td><a href="https://cplusplus.github.io/CWG/issues/2330.html">2330</a></td>
+ <td>[<a href="https://wg21.link/temp.spec">temp.spec</a>]</td>
<td>CD5</td>
<td>Missing references to variable templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2331">
<td><a href="https://cplusplus.github.io/CWG/issues/2331.html">2331</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.class">basic.scope.class</a>]</td>
<td>CD6</td>
<td>Redundancy in description of class scope</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="2332">
<td><a href="https://cplusplus.github.io/CWG/issues/2332.html">2332</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.simple">dcl.type.simple</a>]</td>
<td>CD5</td>
<td><I>template-name</I> as <I>simple-type-name</I> vs injected-class-name</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2333">
<td><a href="https://cplusplus.github.io/CWG/issues/2333.html">2333</a></td>
+ <td>[<a href="https://wg21.link/lex.ccon">lex.ccon</a>]</td>
<td>CD6</td>
<td>Escape sequences in UTF-8 character literals</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2334">
<td><a href="https://cplusplus.github.io/CWG/issues/2334.html">2334</a></td>
+ <td>[<a href="https://wg21.link/intro.object">intro.object</a>]</td>
<td>open</td>
<td>Creation of objects by <TT>typeid</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2335">
<td><a href="https://cplusplus.github.io/CWG/issues/2335.html">2335</a></td>
+ <td>[<a href="https://wg21.link/class.static.data">class.static.data</a>]</td>
<td>drafting</td>
<td>Deduced return types vs member types</td>
<td align="center">
@@ -13849,1308 +16142,1526 @@ and <I>POD class</I></td>
</tr>
<tr id="2336">
<td><a href="https://cplusplus.github.io/CWG/issues/2336.html">2336</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>CD5</td>
<td>Destructor characteristics vs potentially-constructed subobjects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2337">
<td><a href="https://cplusplus.github.io/CWG/issues/2337.html">2337</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>open</td>
<td>Incorrect implication of logic ladder for conversion sequence tiebreakers</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2338">
<td><a href="https://cplusplus.github.io/CWG/issues/2338.html">2338</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>CD5</td>
<td>Undefined behavior converting to short enums with fixed underlying types</td>
<td class="full" align="center">Clang 12</td>
</tr>
<tr id="2339">
<td><a href="https://cplusplus.github.io/CWG/issues/2339.html">2339</a></td>
+ <td>[<a href="https://wg21.link/dcl.struct.bind">dcl.struct.bind</a>]</td>
<td>CD5</td>
<td>Underspecified template arguments in structured bindings</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2340">
<td><a href="https://cplusplus.github.io/CWG/issues/2340.html">2340</a></td>
+ <td>[<a href="https://wg21.link/dcl.struct.bind">dcl.struct.bind</a>]</td>
<td>open</td>
<td>Reference collapsing and structured bindings</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2341">
<td><a href="https://cplusplus.github.io/CWG/issues/2341.html">2341</a></td>
+ <td>[<a href="https://wg21.link/dcl.pre">dcl.pre</a>]</td>
<td>CD5</td>
<td>Structured bindings with static storage duration</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2342">
<td><a href="https://cplusplus.github.io/CWG/issues/2342.html">2342</a></td>
+ <td>[<a href="https://wg21.link/expr.reinterpret.cast">expr.reinterpret.cast</a>]</td>
<td>CD5</td>
<td>Reference <TT>reinterpret_cast</TT> and pointer-interconvertibility</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2343">
<td><a href="https://cplusplus.github.io/CWG/issues/2343.html">2343</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>C++20</td>
<td><TT>void*</TT> non-type template parameters</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2344">
<td><a href="https://cplusplus.github.io/CWG/issues/2344.html">2344</a></td>
+ <td>[<a href="https://wg21.link/stmt.select">stmt.select</a>]</td>
<td>NAD</td>
<td>Redeclaration of names in <I>init-statement</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2345">
<td><a href="https://cplusplus.github.io/CWG/issues/2345.html">2345</a></td>
+ <td>[<a href="https://wg21.link/stmt.if">stmt.if</a>]</td>
<td>CD5</td>
<td>Jumping across initializers in <I>init-statement</I>s and <I>condition</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2346">
<td><a href="https://cplusplus.github.io/CWG/issues/2346.html">2346</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>CD5</td>
<td>Local variables in default arguments</td>
<td class="full" align="center">Clang 11</td>
</tr>
<tr id="2347">
<td><a href="https://cplusplus.github.io/CWG/issues/2347.html">2347</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>C++20</td>
<td>Passing short scoped enumerations to ellipsis</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2348">
<td><a href="https://cplusplus.github.io/CWG/issues/2348.html">2348</a></td>
+ <td>[<a href="https://wg21.link/stmt.if">stmt.if</a>]</td>
<td>NAD</td>
<td>Non-templated <TT>constexpr if</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2349">
<td><a href="https://cplusplus.github.io/CWG/issues/2349.html">2349</a></td>
+ <td>[<a href="https://wg21.link/stmt">stmt</a>]</td>
<td>NAD</td>
<td>Class/enumeration names vs conditions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2350">
<td><a href="https://cplusplus.github.io/CWG/issues/2350.html">2350</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.partial">temp.deduct.partial</a>]</td>
<td>NAD</td>
<td>Forwarding references and deduction guides</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2351">
<td><a href="https://cplusplus.github.io/CWG/issues/2351.html">2351</a></td>
+ <td>[<a href="https://wg21.link/expr.type.conv">expr.type.conv</a>]</td>
<td>CD5</td>
<td><TT>void{}</TT></td>
<td class="full" align="center">Clang 20</td>
</tr>
<tr id="2352">
<td><a href="https://cplusplus.github.io/CWG/issues/2352.html">2352</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD5</td>
<td>Similar types and reference binding</td>
<td class="full" align="center">Clang 10</td>
</tr>
<tr id="2353">
<td><a href="https://cplusplus.github.io/CWG/issues/2353.html">2353</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD5</td>
<td>Potential results of a member access expression for a static data member</td>
<td class="full" align="center">Clang 9</td>
</tr>
<tr id="2354">
<td><a href="https://cplusplus.github.io/CWG/issues/2354.html">2354</a></td>
+ <td>[<a href="https://wg21.link/basic.align">basic.align</a>]</td>
<td>CD5</td>
<td>Extended alignment and object representation</td>
<td class="full" align="center">Clang 15</td>
</tr>
<tr id="2355">
<td><a href="https://cplusplus.github.io/CWG/issues/2355.html">2355</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>CD6</td>
<td>Deducing <I>noexcept-specifier</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2356">
<td><a href="https://cplusplus.github.io/CWG/issues/2356.html">2356</a></td>
+ <td>[<a href="https://wg21.link/over.match.funcs">over.match.funcs</a>]</td>
<td>CD5</td>
<td>Base class copy and move constructors should not be inherited</td>
<td class="full" align="center">Clang 4</td>
</tr>
<tr id="2357">
<td><a href="https://cplusplus.github.io/CWG/issues/2357.html">2357</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.unqual">basic.lookup.unqual</a>]</td>
<td>NAD</td>
<td>Lookup in member function declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2358">
<td><a href="https://cplusplus.github.io/CWG/issues/2358.html">2358</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>CD5</td>
<td>Explicit capture of value</td>
<td class="full" align="center">Clang 16</td>
</tr>
<tr id="2359">
<td><a href="https://cplusplus.github.io/CWG/issues/2359.html">2359</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>CD5</td>
<td>Unintended copy initialization with designated initializers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2360">
<td><a href="https://cplusplus.github.io/CWG/issues/2360.html">2360</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.unused">dcl.attr.unused</a>]</td>
<td>CD5</td>
<td><TT>[[maybe_unused]]</TT> and structured bindings</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2361">
<td><a href="https://cplusplus.github.io/CWG/issues/2361.html">2361</a></td>
+ <td>[<a href="https://wg21.link/csetjmp.syn">csetjmp.syn</a>]</td>
<td>open</td>
<td>Unclear description of <TT>longjmp</TT> undefined behavior</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2362">
<td><a href="https://cplusplus.github.io/CWG/issues/2362.html">2362</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.general">dcl.fct.def.general</a>]</td>
<td>open</td>
<td><TT>__func__</TT> should be <TT>constexpr</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr id="2363">
<td><a href="https://cplusplus.github.io/CWG/issues/2363.html">2363</a></td>
+ <td>[<a href="https://wg21.link/class.friend">class.friend</a>]</td>
<td>NAD</td>
<td>Opaque enumeration friend declarations</td>
<td class="full" align="center">Clang 19</td>
</tr>
<tr id="2364">
<td><a href="https://cplusplus.github.io/CWG/issues/2364.html">2364</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>NAD</td>
<td>Constant expressions, aggregate initialization, and modifications</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2365">
<td><a href="https://cplusplus.github.io/CWG/issues/2365.html">2365</a></td>
+ <td>[<a href="https://wg21.link/expr.dynamic.cast">expr.dynamic.cast</a>]</td>
<td>CD5</td>
<td>Confusing specification for <TT>dynamic_cast</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2366">
<td><a href="https://cplusplus.github.io/CWG/issues/2366.html">2366</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>CD5</td>
<td>Can default initialization be constant initialization?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2367">
<td><a href="https://cplusplus.github.io/CWG/issues/2367.html">2367</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>NAD</td>
<td>Lambdas in default arguments vs the ODR</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2368">
<td><a href="https://cplusplus.github.io/CWG/issues/2368.html">2368</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD5</td>
<td>Differences in relational and three-way constant comparisons</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2369">
<td><a href="https://cplusplus.github.io/CWG/issues/2369.html">2369</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>CD6</td>
<td>Ordering between constraints and substitution</td>
<td class="partial" align="center">Partial</td>
</tr>
<tr id="2370">
<td><a href="https://cplusplus.github.io/CWG/issues/2370.html">2370</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.unqual">basic.lookup.unqual</a>]</td>
<td>CD6</td>
<td><TT>friend</TT> declarations of namespace-scope functions</td>
<td class="none" align="center">No</td>
</tr>
<tr id="2371">
<td><a href="https://cplusplus.github.io/CWG/issues/2371.html">2371</a></td>
+ <td>[<a href="https://wg21.link/basic.def">basic.def</a>]</td>
<td>CD5</td>
<td>Use of the English term &#8220;attributes&#8221; is confusing</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2372">
<td><a href="https://cplusplus.github.io/CWG/issues/2372.html">2372</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD5</td>
<td>Incorrect matching rules for block-scope <TT>extern</TT> declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2373">
<td><a href="https://cplusplus.github.io/CWG/issues/2373.html">2373</a></td>
+ <td>[<a href="https://wg21.link/temp.func.order">temp.func.order</a>]</td>
<td>CD5</td>
<td>Incorrect handling of static member function templates in partial ordering</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2374">
<td><a href="https://cplusplus.github.io/CWG/issues/2374.html">2374</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>C++20</td>
<td>Overly permissive specification of <TT>enum</TT> direct-list-initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2375">
<td><a href="https://cplusplus.github.io/CWG/issues/2375.html">2375</a></td>
+ <td>[<a href="https://wg21.link/class.static.data">class.static.data</a>]</td>
<td>NAD</td>
<td>Multiple redeclarations of <TT>constexpr</TT> static data members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2376">
<td><a href="https://cplusplus.github.io/CWG/issues/2376.html">2376</a></td>
+ <td>[<a href="https://wg21.link/over.match.class.deduct">over.match.class.deduct</a>]</td>
<td>CD5</td>
<td>Class template argument deduction with array declarator</td>
<td class="full" align="center">Clang 21</td>
</tr>
<tr id="2377">
<td><a href="https://cplusplus.github.io/CWG/issues/2377.html">2377</a></td>
+ <td>[<a href="https://wg21.link/over.match.viable">over.match.viable</a>]</td>
<td>NAD</td>
<td>Explicit copy constructor vs function viability</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2378">
<td><a href="https://cplusplus.github.io/CWG/issues/2378.html">2378</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>C++20</td>
<td>Inconsistent grammar for reference <I>init-capture</I> of pack</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2379">
<td><a href="https://cplusplus.github.io/CWG/issues/2379.html">2379</a></td>
+ <td>[<a href="https://wg21.link/temp.friend">temp.friend</a>]</td>
<td>CD5</td>
<td>Missing prohibition against <TT>constexpr</TT> in <TT>friend</TT> declaration</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2380">
<td><a href="https://cplusplus.github.io/CWG/issues/2380.html">2380</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD5</td>
<td><I>capture-default</I> makes too many references odr-usable</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2381">
<td><a href="https://cplusplus.github.io/CWG/issues/2381.html">2381</a></td>
+ <td>[<a href="https://wg21.link/expr.type">expr.type</a>]</td>
<td>CD5</td>
<td>Composite pointer type of pointers to plain and noexcept member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2382">
<td><a href="https://cplusplus.github.io/CWG/issues/2382.html">2382</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD5</td>
<td>Array allocation overhead for non-allocating placement <TT>new</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2383">
<td><a href="https://cplusplus.github.io/CWG/issues/2383.html">2383</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>NAD</td>
<td>Variadic member functions of variadic class templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2384">
<td><a href="https://cplusplus.github.io/CWG/issues/2384.html">2384</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.conv">temp.deduct.conv</a>]</td>
<td>CD5</td>
<td>Conversion function templates and qualification conversions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2385">
<td><a href="https://cplusplus.github.io/CWG/issues/2385.html">2385</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.id.qual">expr.prim.id.qual</a>]</td>
<td>CD5</td>
<td>Lookup for <I>conversion-function-id</I>s</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="2386">
<td><a href="https://cplusplus.github.io/CWG/issues/2386.html">2386</a></td>
+ <td>[<a href="https://wg21.link/dcl.struct.bind">dcl.struct.bind</a>]</td>
<td>CD5</td>
<td><T>tuple_size</T> requirements for structured binding</td>
<td class="full" align="center">Clang 9</td>
</tr>
<tr id="2387">
<td><a href="https://cplusplus.github.io/CWG/issues/2387.html">2387</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD5</td>
<td>Linkage of const-qualified variable template</td>
<td class="full" align="center">Clang 9</td>
</tr>
<tr id="2388">
<td><a href="https://cplusplus.github.io/CWG/issues/2388.html">2388</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.grammar">dcl.attr.grammar</a>]</td>
<td>NAD</td>
<td>Applicability of <I>contract-attribute-specifier</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2389">
<td><a href="https://cplusplus.github.io/CWG/issues/2389.html">2389</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>CD6</td>
<td>Agreement of deduced and explicitly-specified variable types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2390">
<td><a href="https://cplusplus.github.io/CWG/issues/2390.html">2390</a></td>
+ <td>[<a href="https://wg21.link/cpp.cond">cpp.cond</a>]</td>
<td>CD5</td>
<td>Is the argument of <TT>__has_cpp_attribute</TT> macro-expanded?</td>
<td class="full" align="center">Clang 14</td>
</tr>
<tr id="2391">
<td><a href="https://cplusplus.github.io/CWG/issues/2391.html">2391</a></td>
+ <td>[<a href="https://wg21.link/temp.variadic">temp.variadic</a>]</td>
<td>dup</td>
<td>Additional template parameters following pack expansion</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2392">
<td><a href="https://cplusplus.github.io/CWG/issues/2392.html">2392</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++23</td>
<td><I>new-expression</I> size check and constant evaluation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2393">
<td><a href="https://cplusplus.github.io/CWG/issues/2393.html">2393</a></td>
+ <td>[<a href="https://wg21.link/expr.pseudo">expr.pseudo</a>]</td>
<td>NAD</td>
<td>Pseudo-destructors and object lifetime</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2394">
<td><a href="https://cplusplus.github.io/CWG/issues/2394.html">2394</a></td>
+ <td>[<a href="https://wg21.link/class.default.ctor">class.default.ctor</a>]</td>
<td>CD5</td>
<td>Const-default-constructible for members</td>
<td class="full" align="center">Clang 15</td>
</tr>
<tr class="open" id="2395">
<td><a href="https://cplusplus.github.io/CWG/issues/2395.html">2395</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>drafting</td>
<td>Parameters following a pack expansion</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2396">
<td><a href="https://cplusplus.github.io/CWG/issues/2396.html">2396</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.id.qual">expr.prim.id.qual</a>]</td>
<td>CD6</td>
<td>Lookup of names in complex <I>conversion-type-id</I>s</td>
<td class="none" align="center">No</td>
</tr>
<tr id="2397">
<td><a href="https://cplusplus.github.io/CWG/issues/2397.html">2397</a></td>
+ <td>[<a href="https://wg21.link/dcl.array">dcl.array</a>]</td>
<td>CD6</td>
<td><TT>auto</TT> specifier for pointers and references to arrays</td>
<td class="full" align="center">Clang 17</td>
</tr>
<tr class="open" id="2398">
<td><a href="https://cplusplus.github.io/CWG/issues/2398.html">2398</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.template">temp.arg.template</a>]</td>
<td>drafting</td>
<td>Template template parameter matching and deduction</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2399">
<td><a href="https://cplusplus.github.io/CWG/issues/2399.html">2399</a></td>
+ <td>[<a href="https://wg21.link/expr.assign">expr.assign</a>]</td>
<td>CD5</td>
<td>Unclear referent of &#8220;expression&#8221; in <I>assignment-expression</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2400">
<td><a href="https://cplusplus.github.io/CWG/issues/2400.html">2400</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD5</td>
<td>Constexpr virtual functions and temporary objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2401">
<td><a href="https://cplusplus.github.io/CWG/issues/2401.html">2401</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.nontype">temp.arg.nontype</a>]</td>
<td>C++20</td>
<td>Array decay vs prohibition of subobject non-type arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2402">
<td><a href="https://cplusplus.github.io/CWG/issues/2402.html">2402</a></td>
+ <td>[<a href="https://wg21.link/lex.ccon">lex.ccon</a>]</td>
<td>CD6</td>
<td>When is the restriction to a single <I>c-char</I> in a Unicode literal enforced?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2403">
<td><a href="https://cplusplus.github.io/CWG/issues/2403.html">2403</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>drafting</td>
<td>Temporary materialization and base/member initialization</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2404">
<td><a href="https://cplusplus.github.io/CWG/issues/2404.html">2404</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>CD5</td>
<td><TT>[[no_unique_address]]</TT> and allocation order</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2405">
<td><a href="https://cplusplus.github.io/CWG/issues/2405.html">2405</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.expr">temp.dep.expr</a>]</td>
<td>CD6</td>
<td>Additional type-dependent expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2406">
<td><a href="https://cplusplus.github.io/CWG/issues/2406.html">2406</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.fallthrough">dcl.attr.fallthrough</a>]</td>
<td>CD5</td>
<td><TT>[[fallthrough]]</TT> attribute and iteration statements</td>
<td class="full" align="center">Clang 5</td>
</tr>
<tr id="2407">
<td><a href="https://cplusplus.github.io/CWG/issues/2407.html">2407</a></td>
+ <td>[<a href="https://wg21.link/diff">diff</a>]</td>
<td>C++23</td>
<td>Missing entry in Annex C for defaulted comparison operators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2408">
<td><a href="https://cplusplus.github.io/CWG/issues/2408.html">2408</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>NAD</td>
<td>Temporaries and previously-initialized elements in aggregate initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2409">
<td><a href="https://cplusplus.github.io/CWG/issues/2409.html">2409</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>drafting</td>
<td>Explicit specializations of constexpr static data members</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2410">
<td><a href="https://cplusplus.github.io/CWG/issues/2410.html">2410</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>C++23</td>
<td>Implicit calls of immediate functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2411">
<td><a href="https://cplusplus.github.io/CWG/issues/2411.html">2411</a></td>
+ <td>[<a href="https://wg21.link/temp.type">temp.type</a>]</td>
<td>C++20</td>
<td>Comparison of pointers to members in template non-type arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2412">
<td><a href="https://cplusplus.github.io/CWG/issues/2412.html">2412</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>review</td>
<td>SFINAE vs undeduced placeholder type</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2413">
<td><a href="https://cplusplus.github.io/CWG/issues/2413.html">2413</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>CD6</td>
<td><TT>typename</TT> in <I>conversion-function-id</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2414">
<td><a href="https://cplusplus.github.io/CWG/issues/2414.html">2414</a></td>
+ <td>[<a href="https://wg21.link/class.compare.default">class.compare.default</a>]</td>
<td>C++20</td>
<td>Unclear results if both member and friend <TT>operator&lt;=&gt;</TT> are declared</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2415">
<td><a href="https://cplusplus.github.io/CWG/issues/2415.html">2415</a></td>
+ <td>[<a href="https://wg21.link/class.copy.assign">class.copy.assign</a>]</td>
<td>NAD</td>
<td><I>using-declaration</I>s vs copy assignment operators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2416">
<td><a href="https://cplusplus.github.io/CWG/issues/2416.html">2416</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>C++20</td>
<td>Explicit specializations vs <TT>constexpr</TT> and <TT>consteval</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2417">
<td><a href="https://cplusplus.github.io/CWG/issues/2417.html">2417</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>open</td>
<td>Explicit instantiation and exception specifications</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2418">
<td><a href="https://cplusplus.github.io/CWG/issues/2418.html">2418</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD5</td>
<td>Missing cases in definition of &#8220;usable in constant expressions&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2419">
<td><a href="https://cplusplus.github.io/CWG/issues/2419.html">2419</a></td>
+ <td>[<a href="https://wg21.link/expr.add">expr.add</a>]</td>
<td>C++20</td>
<td>Loss of generality treating pointers to objects as one-element arrays</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2420">
<td><a href="https://cplusplus.github.io/CWG/issues/2420.html">2420</a></td>
+ <td>[<a href="https://wg21.link/except.spec">except.spec</a>]</td>
<td>dup</td>
<td>Exception specifications in explicit instantiation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2421">
<td><a href="https://cplusplus.github.io/CWG/issues/2421.html">2421</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>drafting</td>
<td>Explicit instantiation of constrained member functions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2422">
<td><a href="https://cplusplus.github.io/CWG/issues/2422.html">2422</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.guide">temp.deduct.guide</a>]</td>
<td>C++20</td>
<td>Incorrect grammar for <I>deduction-guide</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2423">
<td><a href="https://cplusplus.github.io/CWG/issues/2423.html">2423</a></td>
+ <td>[<a href="https://wg21.link/basic.pre">basic.pre</a>]</td>
<td>NAD</td>
<td>Typedefs, names, and entities</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2424">
<td><a href="https://cplusplus.github.io/CWG/issues/2424.html">2424</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>C++20</td>
<td><TT>constexpr</TT> initialization requirements for variant members</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2425">
<td><a href="https://cplusplus.github.io/CWG/issues/2425.html">2425</a></td>
+ <td>[<a href="https://wg21.link/over.match.class.deduct">over.match.class.deduct</a>]</td>
<td>open</td>
<td>Confusing wording for deduction from a type</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2426">
<td><a href="https://cplusplus.github.io/CWG/issues/2426.html">2426</a></td>
+ <td>[<a href="https://wg21.link/except.ctor">except.ctor</a>]</td>
<td>C++20</td>
<td>Reference to destructor that cannot be invoked</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2427">
<td><a href="https://cplusplus.github.io/CWG/issues/2427.html">2427</a></td>
+ <td>[<a href="https://wg21.link/expr.assign">expr.assign</a>]</td>
<td>C++20</td>
<td>Deprecation of volatile operands and unevaluated contexts</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2428">
<td><a href="https://cplusplus.github.io/CWG/issues/2428.html">2428</a></td>
+ <td>[<a href="https://wg21.link/temp.concept">temp.concept</a>]</td>
<td>C++23</td>
<td>Deprecating a concept</td>
<td class="full" align="center">Clang 19</td>
</tr>
<tr id="2429">
<td><a href="https://cplusplus.github.io/CWG/issues/2429.html">2429</a></td>
+ <td>[<a href="https://wg21.link/stmt.dcl">stmt.dcl</a>]</td>
<td>C++20</td>
<td>Initialization of <TT>thread_local</TT> variables referenced by lambdas</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2430">
<td><a href="https://cplusplus.github.io/CWG/issues/2430.html">2430</a></td>
+ <td>[<a href="https://wg21.link/class.mem">class.mem</a>]</td>
<td>C++20</td>
<td>Completeness of return and parameter types of member functions</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="2431">
<td><a href="https://cplusplus.github.io/CWG/issues/2431.html">2431</a></td>
+ <td>[<a href="https://wg21.link/basic.exec">basic.exec</a>]</td>
<td>C++20</td>
<td>Full-expressions and temporaries bound to references</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2432">
<td><a href="https://cplusplus.github.io/CWG/issues/2432.html">2432</a></td>
+ <td>[<a href="https://wg21.link/class.spaceship">class.spaceship</a>]</td>
<td>C++20</td>
<td>Return types for defaulted <TT>&lt;=&gt;</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2433">
<td><a href="https://cplusplus.github.io/CWG/issues/2433.html">2433</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>C++20</td>
<td>Variable templates in the ODR</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2434">
<td><a href="https://cplusplus.github.io/CWG/issues/2434.html">2434</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>review</td>
<td>Mandatory copy elision vs non-class objects</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2435">
<td><a href="https://cplusplus.github.io/CWG/issues/2435.html">2435</a></td>
+ <td>[<a href="https://wg21.link/temp.spec">temp.spec</a>]</td>
<td>open</td>
<td>Alias template specializations</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2436">
<td><a href="https://cplusplus.github.io/CWG/issues/2436.html">2436</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.coroutine">dcl.fct.def.coroutine</a>]</td>
<td>C++20</td>
<td>Copy semantics of coroutine parameters</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2437">
<td><a href="https://cplusplus.github.io/CWG/issues/2437.html">2437</a></td>
+ <td>[<a href="https://wg21.link/class.spaceship">class.spaceship</a>]</td>
<td>C++20</td>
<td>Conversion of <TT>std::strong_ordering</TT> in a defaulted <TT>operator&lt;=&gt;</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2438">
<td><a href="https://cplusplus.github.io/CWG/issues/2438.html">2438</a></td>
+ <td>[<a href="https://wg21.link/conv.qual">conv.qual</a>]</td>
<td>open</td>
<td>Problems in the specification of qualification conversions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2439">
<td><a href="https://cplusplus.github.io/CWG/issues/2439.html">2439</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++20</td>
<td>Undefined term in definition of &#8220;usable in constant expressions&#8221;</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2440">
<td><a href="https://cplusplus.github.io/CWG/issues/2440.html">2440</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++23</td>
<td>Allocation in core constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2441">
<td><a href="https://cplusplus.github.io/CWG/issues/2441.html">2441</a></td>
+ <td>[<a href="https://wg21.link/dcl.inline">dcl.inline</a>]</td>
<td>C++20</td>
<td>Inline function parameters</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2442">
<td><a href="https://cplusplus.github.io/CWG/issues/2442.html">2442</a></td>
+ <td>[<a href="https://wg21.link/over.match.viable">over.match.viable</a>]</td>
<td>C++20</td>
<td>Incorrect requirement for default arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2443">
<td><a href="https://cplusplus.github.io/CWG/issues/2443.html">2443</a></td>
+ <td>[<a href="https://wg21.link/module.interface">module.interface</a>]</td>
<td>C++23</td>
<td>Meaningless template exports</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2444">
<td><a href="https://cplusplus.github.io/CWG/issues/2444.html">2444</a></td>
+ <td>[<a href="https://wg21.link/basic.start.dynamic">basic.start.dynamic</a>]</td>
<td>drafting</td>
<td>Constant expressions in initialization odr-use</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2445">
<td><a href="https://cplusplus.github.io/CWG/issues/2445.html">2445</a></td>
+ <td>[<a href="https://wg21.link/temp.func.order">temp.func.order</a>]</td>
<td>C++20</td>
<td>Partial ordering with rewritten candidates</td>
<td class="full" align="center">Clang 19</td>
</tr>
<tr id="2446">
<td><a href="https://cplusplus.github.io/CWG/issues/2446.html">2446</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.expr">temp.dep.expr</a>]</td>
<td>C++20</td>
<td>Questionable type-dependency of <I>concept-id</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2447">
<td><a href="https://cplusplus.github.io/CWG/issues/2447.html">2447</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto">dcl.spec.auto</a>]</td>
<td>C++20</td>
<td>Unintended description of abbreviated function templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2448">
<td><a href="https://cplusplus.github.io/CWG/issues/2448.html">2448</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>CD6</td>
<td>Cv-qualification of arithmetic types and deprecation of volatile</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2449">
<td><a href="https://cplusplus.github.io/CWG/issues/2449.html">2449</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.op">expr.unary.op</a>]</td>
<td>extension</td>
<td>Thunks as an implementation technique for pointers to virtual functions</td>
<td align="center">Extension</td>
</tr>
<tr id="2450">
<td><a href="https://cplusplus.github.io/CWG/issues/2450.html">2450</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>CD7</td>
<td><I>braced-init-list</I> as a <I>template-argument</I></td>
<td class="full" align="center">Clang 18</td>
</tr>
<tr id="2451">
<td><a href="https://cplusplus.github.io/CWG/issues/2451.html">2451</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.coroutine">dcl.fct.def.coroutine</a>]</td>
<td>C++23</td>
<td><I>promise</I><TT>.unhandled_exception()</TT> and final suspend point</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2452">
<td><a href="https://cplusplus.github.io/CWG/issues/2452.html">2452</a></td>
+ <td>[<a href="https://wg21.link/stmt.return.coroutine">stmt.return.coroutine</a>]</td>
<td>CD6</td>
<td>Flowing off the end of a coroutine</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2453">
<td><a href="https://cplusplus.github.io/CWG/issues/2453.html">2453</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto.general">dcl.spec.auto.general</a>]</td>
<td>NAD</td>
<td>Deduced return types and coroutine lambdas</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2454">
<td><a href="https://cplusplus.github.io/CWG/issues/2454.html">2454</a></td>
+ <td>[<a href="https://wg21.link/expr.await">expr.await</a>]</td>
<td>NAD</td>
<td>Tail recursion and coroutine symmetric transfer</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2455">
<td><a href="https://cplusplus.github.io/CWG/issues/2455.html">2455</a></td>
+ <td>[<a href="https://wg21.link/lex.phases">lex.phases</a>]</td>
<td>CD6</td>
<td>Concatenation of string literals vs translation phases 5 and 6</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2456">
<td><a href="https://cplusplus.github.io/CWG/issues/2456.html">2456</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>open</td>
<td>Viable user-defined conversions in converted constant expressions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2457">
<td><a href="https://cplusplus.github.io/CWG/issues/2457.html">2457</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>CD6</td>
<td>Unexpanded parameter packs don't make a function type dependent</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2458">
<td><a href="https://cplusplus.github.io/CWG/issues/2458.html">2458</a></td>
+ <td>[<a href="https://wg21.link/expr.ref">expr.ref</a>]</td>
<td>CD6</td>
<td>Value category of expressions denoting non-static member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2459">
<td><a href="https://cplusplus.github.io/CWG/issues/2459.html">2459</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.nontype">temp.arg.nontype</a>]</td>
<td>CD7</td>
<td>Template parameter initialization</td>
<td class="full" align="center">Clang 18</td>
</tr>
<tr id="2460">
<td><a href="https://cplusplus.github.io/CWG/issues/2460.html">2460</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>CD6</td>
<td>C language linkage and constrained non-template friends</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2461">
<td><a href="https://cplusplus.github.io/CWG/issues/2461.html">2461</a></td>
+ <td>[<a href="https://wg21.link/temp.res">temp.res</a>]</td>
<td>CD6</td>
<td>Diagnosing non-<TT>bool</TT> type constraints</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2462">
<td><a href="https://cplusplus.github.io/CWG/issues/2462.html">2462</a></td>
+ <td>[<a href="https://wg21.link/temp.res.general">temp.res.general</a>]</td>
<td>open</td>
<td>Problems with the omission of the <TT>typename</TT> keyword</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2463">
<td><a href="https://cplusplus.github.io/CWG/issues/2463.html">2463</a></td>
+ <td>[<a href="https://wg21.link/class.prop">class.prop</a>]</td>
<td>open</td>
<td>Trivial copyability and unions with non-trivial members</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2464">
<td><a href="https://cplusplus.github.io/CWG/issues/2464.html">2464</a></td>
+ <td>[<a href="https://wg21.link/ptr.launder">ptr.launder</a>]</td>
<td>CD6</td>
<td>Constexpr launder and unions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2465">
<td><a href="https://cplusplus.github.io/CWG/issues/2465.html">2465</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.coroutine">dcl.fct.def.coroutine</a>]</td>
<td>CD6</td>
<td>Coroutine parameters passed to a promise constructor</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2466">
<td><a href="https://cplusplus.github.io/CWG/issues/2466.html">2466</a></td>
+ <td>[<a href="https://wg21.link/expr.await">expr.await</a>]</td>
<td>CD6</td>
<td><TT>co_await</TT> should be a single evaluation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2467">
<td><a href="https://cplusplus.github.io/CWG/issues/2467.html">2467</a></td>
+ <td>[<a href="https://wg21.link/over.match.class.deduct">over.match.class.deduct</a>]</td>
<td>drafting</td>
<td>CTAD for alias templates and the deducible check</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2468">
<td><a href="https://cplusplus.github.io/CWG/issues/2468.html">2468</a></td>
+ <td>[<a href="https://wg21.link/temp.res.general">temp.res.general</a>]</td>
<td>open</td>
<td>Omission of the <TT>typename</TT> keyword in a member template parameter list</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2469">
<td><a href="https://cplusplus.github.io/CWG/issues/2469.html">2469</a></td>
+ <td>[<a href="https://wg21.link/intro.object">intro.object</a>]</td>
<td>drafting</td>
<td>Implicit object creation vs constant expressions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2470">
<td><a href="https://cplusplus.github.io/CWG/issues/2470.html">2470</a></td>
+ <td>[<a href="https://wg21.link/intro.object">intro.object</a>]</td>
<td>CD6</td>
<td>Multiple array objects providing storage for one object</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2471">
<td><a href="https://cplusplus.github.io/CWG/issues/2471.html">2471</a></td>
+ <td>[<a href="https://wg21.link/over.match.class.deduct">over.match.class.deduct</a>]</td>
<td>drafting</td>
<td>Nested class template argument deduction</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2472">
<td><a href="https://cplusplus.github.io/CWG/issues/2472.html">2472</a></td>
+ <td>[<a href="https://wg21.link/expr.await">expr.await</a>]</td>
<td>NAD</td>
<td>Value categories in <I>await-expression</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2473">
<td><a href="https://cplusplus.github.io/CWG/issues/2473.html">2473</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.id.dtor">expr.prim.id.dtor</a>]</td>
<td>open</td>
<td>Parentheses in pseudo-destructor calls</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2474">
<td><a href="https://cplusplus.github.io/CWG/issues/2474.html">2474</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>CD6</td>
<td>Cv-qualification and deletion</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2475">
<td><a href="https://cplusplus.github.io/CWG/issues/2475.html">2475</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>C++23</td>
<td>Object declarations of type <I>cv</I> <TT>void</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2476">
<td><a href="https://cplusplus.github.io/CWG/issues/2476.html">2476</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto.general">dcl.spec.auto.general</a>]</td>
<td>CD7</td>
<td><I>placeholder-type-specifier</I>s and function declarators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2477">
<td><a href="https://cplusplus.github.io/CWG/issues/2477.html">2477</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>CD6</td>
<td>Defaulted vs deleted copy constructors/assignment operators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2478">
<td><a href="https://cplusplus.github.io/CWG/issues/2478.html">2478</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>C++23</td>
<td>Properties of explicit specializations of implicitly-instantiated class templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2479">
<td><a href="https://cplusplus.github.io/CWG/issues/2479.html">2479</a></td>
+ <td>[<a href="https://wg21.link/basic.start.main">basic.start.main</a>]</td>
<td>CD6</td>
<td>Missing specifications for <TT>consteval</TT> and <TT>constinit</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2480">
<td><a href="https://cplusplus.github.io/CWG/issues/2480.html">2480</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.general">basic.lookup.general</a>]</td>
<td>drafting</td>
<td>Lookup for enumerators in modules</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2481">
<td><a href="https://cplusplus.github.io/CWG/issues/2481.html">2481</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD6</td>
<td>Cv-qualification of temporary to which a reference is bound</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2482">
<td><a href="https://cplusplus.github.io/CWG/issues/2482.html">2482</a></td>
+ <td>[<a href="https://wg21.link/bit.cast">bit.cast</a>]</td>
<td>CD6</td>
<td><TT>bit_cast</TT> and indeterminate values</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2483">
<td><a href="https://cplusplus.github.io/CWG/issues/2483.html">2483</a></td>
+ <td>[<a href="https://wg21.link/dcl.link">dcl.link</a>]</td>
<td>C++23</td>
<td>Language linkage of static member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2484">
<td><a href="https://cplusplus.github.io/CWG/issues/2484.html">2484</a></td>
+ <td>[<a href="https://wg21.link/conv.prom">conv.prom</a>]</td>
<td>CD6</td>
<td><TT>char8_t</TT> and <TT>char16_t</TT> in integral promotions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2485">
<td><a href="https://cplusplus.github.io/CWG/issues/2485.html">2485</a></td>
+ <td>[<a href="https://wg21.link/conv.prom">conv.prom</a>]</td>
<td>CD7</td>
<td>Bit-fields in integral promotions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2486">
<td><a href="https://cplusplus.github.io/CWG/issues/2486.html">2486</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>CD6</td>
<td>Call to <TT>noexcept</TT> function via <TT>noexcept(false)</TT> pointer/lvalue</td>
<td class="full" align="center">Clang 4 (C++17 onwards)</td>
</tr>
<tr class="open" id="2487">
<td><a href="https://cplusplus.github.io/CWG/issues/2487.html">2487</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.expr">temp.dep.expr</a>]</td>
<td>drafting</td>
<td>Type dependence of function-style cast to incomplete array type</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2488">
<td><a href="https://cplusplus.github.io/CWG/issues/2488.html">2488</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.scope">basic.scope.scope</a>]</td>
<td>open</td>
<td>Overloading virtual functions and functions with trailing <I>requires-clause</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2489">
<td><a href="https://cplusplus.github.io/CWG/issues/2489.html">2489</a></td>
+ <td>[<a href="https://wg21.link/intro.object">intro.object</a>]</td>
<td>C++23</td>
<td>Storage provided by array of <TT>char</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2490">
<td><a href="https://cplusplus.github.io/CWG/issues/2490.html">2490</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD6</td>
<td>Restrictions on destruction in constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2491">
<td><a href="https://cplusplus.github.io/CWG/issues/2491.html">2491</a></td>
+ <td>[<a href="https://wg21.link/module.interface">module.interface</a>]</td>
<td>CD6</td>
<td>Export of typedef after its first declaration</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2492">
<td><a href="https://cplusplus.github.io/CWG/issues/2492.html">2492</a></td>
+ <td>[<a href="https://wg21.link/over.ics.list">over.ics.list</a>]</td>
<td>open</td>
<td>Comparing user-defined conversion sequences in list-initialization</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2493">
<td><a href="https://cplusplus.github.io/CWG/issues/2493.html">2493</a></td>
+ <td>[<a href="https://wg21.link/dcl.spec.auto.general">dcl.spec.auto.general</a>]</td>
<td>dup</td>
<td><TT>auto</TT> as a <I>conversion-type-id</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2494">
<td><a href="https://cplusplus.github.io/CWG/issues/2494.html">2494</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD6</td>
<td>Multiple definitions of non-odr-used entities</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2495">
<td><a href="https://cplusplus.github.io/CWG/issues/2495.html">2495</a></td>
+ <td>[<a href="https://wg21.link/stmt.return">stmt.return</a>]</td>
<td>open</td>
<td>Glvalue result of a function call</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2496">
<td><a href="https://cplusplus.github.io/CWG/issues/2496.html">2496</a></td>
+ <td>[<a href="https://wg21.link/class.virtual">class.virtual</a>]</td>
<td>CD6</td>
<td><I>ref-qualifier</I>s and virtual overriding</td>
<td class="full" align="center">Clang 21</td>
</tr>
<tr class="open" id="2497">
<td><a href="https://cplusplus.github.io/CWG/issues/2497.html">2497</a></td>
+ <td>[<a href="https://wg21.link/temp.point">temp.point</a>]</td>
<td>drafting</td>
<td>Points of instantiation for constexpr function templates</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2498">
<td><a href="https://cplusplus.github.io/CWG/issues/2498.html">2498</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.general">temp.deduct.general</a>]</td>
<td>open</td>
<td>Partial specialization failure and the immediate context</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2499">
<td><a href="https://cplusplus.github.io/CWG/issues/2499.html">2499</a></td>
+ <td>[<a href="https://wg21.link/basic.compound">basic.compound</a>]</td>
<td>CD6</td>
<td>Inconsistency in definition of pointer-interconvertibility</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2500">
<td><a href="https://cplusplus.github.io/CWG/issues/2500.html">2500</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>extension</td>
<td><TT>noexcept(false)</TT> functions and <TT>noexcept</TT> expressions</td>
<td align="center">Extension</td>
</tr>
<tr class="open" id="2501">
<td><a href="https://cplusplus.github.io/CWG/issues/2501.html">2501</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>drafting</td>
<td>Explicit instantiation and trailing <I>requires-clause</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2502">
<td><a href="https://cplusplus.github.io/CWG/issues/2502.html">2502</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.block">basic.scope.block</a>]</td>
<td>CD6</td>
<td>Unintended declaration conflicts in nested statement scopes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2503">
<td><a href="https://cplusplus.github.io/CWG/issues/2503.html">2503</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.id">expr.prim.id</a>]</td>
<td>drafting</td>
<td>Unclear relationship among name, qualified name, and unqualified name</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2504">
<td><a href="https://cplusplus.github.io/CWG/issues/2504.html">2504</a></td>
+ <td>[<a href="https://wg21.link/class.inhctor.init">class.inhctor.init</a>]</td>
<td>CD7</td>
<td>Inheriting constructors from virtual base classes</td>
<td class="none" align="center">No</td>
</tr>
<tr class="open" id="2505">
<td><a href="https://cplusplus.github.io/CWG/issues/2505.html">2505</a></td>
+ <td>[<a href="https://wg21.link/namespace.unnamed">namespace.unnamed</a>]</td>
<td>drafting</td>
<td>Nested unnamed namespace of inline unnamed namespace</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2506">
<td><a href="https://cplusplus.github.io/CWG/issues/2506.html">2506</a></td>
+ <td>[<a href="https://wg21.link/dcl.struct.bind">dcl.struct.bind</a>]</td>
<td>CD6</td>
<td>Structured bindings and array cv-qualifiers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2507">
<td><a href="https://cplusplus.github.io/CWG/issues/2507.html">2507</a></td>
+ <td>[<a href="https://wg21.link/over.oper.general">over.oper.general</a>]</td>
<td>CD6</td>
<td>Default arguments for <TT>operator[]</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2508">
<td><a href="https://cplusplus.github.io/CWG/issues/2508.html">2508</a></td>
+ <td>[<a href="https://wg21.link/temp.local">temp.local</a>]</td>
<td>C++23</td>
<td>Restrictions on uses of template parameter names</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2509">
<td><a href="https://cplusplus.github.io/CWG/issues/2509.html">2509</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.general">expr.prim.lambda.general</a>]</td>
<td>CD6</td>
<td><I>decl-specifier-seq</I> in <I>lambda-specifiers</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2510">
<td><a href="https://cplusplus.github.io/CWG/issues/2510.html">2510</a></td>
+ <td>[<a href="https://wg21.link/class.mem.general">class.mem.general</a>]</td>
<td>NAD</td>
<td><I>noexcept-specifier</I> of friend function vs class completeness</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2511">
<td><a href="https://cplusplus.github.io/CWG/issues/2511.html">2511</a></td>
+ <td>[<a href="https://wg21.link/class.bit">class.bit</a>]</td>
<td>CD6</td>
<td>cv-qualified bit-fields</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2512">
<td><a href="https://cplusplus.github.io/CWG/issues/2512.html">2512</a></td>
+ <td>[<a href="https://wg21.link/expr.typeid">expr.typeid</a>]</td>
<td>NAD</td>
<td><TT>typeid</TT> and incomplete class types</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="2513">
<td><a href="https://cplusplus.github.io/CWG/issues/2513.html">2513</a></td>
+ <td>[<a href="https://wg21.link/class.conv.fct">class.conv.fct</a>]</td>
<td>open</td>
<td>Ambiguity with <I>requires-clause</I> and <I>operator-function-id</I></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2514">
<td><a href="https://cplusplus.github.io/CWG/issues/2514.html">2514</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>open</td>
<td>Modifying const subobjects</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2515">
<td><a href="https://cplusplus.github.io/CWG/issues/2515.html">2515</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>open</td>
<td>Result of a function call</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2516">
<td><a href="https://cplusplus.github.io/CWG/issues/2516.html">2516</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.pdecl">basic.scope.pdecl</a>]</td>
<td>C++23</td>
<td>Locus of <I>enum-specifier</I> or <I>opaque-enum-declaration</I></td>
<td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="2517">
<td><a href="https://cplusplus.github.io/CWG/issues/2517.html">2517</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.req.nested">expr.prim.req.nested</a>]</td>
<td>C++23</td>
<td>Useless restriction on use of parameter in <I>constraint-expression</I></td>
<td class="full" align="center">Clang 21</td>
</tr>
<tr id="2518">
<td><a href="https://cplusplus.github.io/CWG/issues/2518.html">2518</a></td>
+ <td>[<a href="https://wg21.link/intro.compliance.general">intro.compliance.general</a>]</td>
<td>C++23</td>
<td>Conformance requirements and <TT>#error</TT>/<TT>#warning</TT></td>
<td class="full" align="center">Clang 17</td>
</tr>
<tr id="2519">
<td><a href="https://cplusplus.github.io/CWG/issues/2519.html">2519</a></td>
+ <td>[<a href="https://wg21.link/basic.types.general">basic.types.general</a>]</td>
<td>CD7</td>
<td>Object representation of a bit-field</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2520">
<td><a href="https://cplusplus.github.io/CWG/issues/2520.html">2520</a></td>
+ <td>[<a href="https://wg21.link/defns.signature.templ">defns.signature.templ</a>]</td>
<td>C++23</td>
<td>Template signature and default template arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2521">
<td><a href="https://cplusplus.github.io/CWG/issues/2521.html">2521</a></td>
+ <td>[<a href="https://wg21.link/over.literal">over.literal</a>]</td>
<td>C++23</td>
<td>User-defined literals and reserved identifiers</td>
<td class="full" align="center">Clang 17</td>
</tr>
<tr class="open" id="2522">
<td><a href="https://cplusplus.github.io/CWG/issues/2522.html">2522</a></td>
+ <td>[<a href="https://wg21.link/cpp.concat">cpp.concat</a>]</td>
<td>open</td>
<td>Removing placemarker tokens and retention of whitespace</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2523">
<td><a href="https://cplusplus.github.io/CWG/issues/2523.html">2523</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++23</td>
<td>Undefined behavior via omitted destructor call in constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2524">
<td><a href="https://cplusplus.github.io/CWG/issues/2524.html">2524</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>NAD</td>
<td>Distinguishing user-defined conversion sequences by <I>ref-qualifier</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2525">
<td><a href="https://cplusplus.github.io/CWG/issues/2525.html">2525</a></td>
+ <td>[<a href="https://wg21.link/over.best.ics.general">over.best.ics.general</a>]</td>
<td>open</td>
<td>Incorrect definition of implicit conversion sequence</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2526">
<td><a href="https://cplusplus.github.io/CWG/issues/2526.html">2526</a></td>
+ <td>[<a href="https://wg21.link/expr.rel">expr.rel</a>]</td>
<td>C++23</td>
<td>Relational comparison of <TT>void*</TT> pointers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2527">
<td><a href="https://cplusplus.github.io/CWG/issues/2527.html">2527</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.nouniqueaddr">dcl.attr.nouniqueaddr</a>]</td>
<td>NAD</td>
<td>Non-class potentially-overlapping objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2528">
<td><a href="https://cplusplus.github.io/CWG/issues/2528.html">2528</a></td>
+ <td>[<a href="https://wg21.link/expr.arith.conv">expr.arith.conv</a>]</td>
<td>C++23</td>
<td>Three-way comparison and the usual arithmetic conversions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2529">
<td><a href="https://cplusplus.github.io/CWG/issues/2529.html">2529</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++23</td>
<td>Constant destruction of constexpr references</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2530">
<td><a href="https://cplusplus.github.io/CWG/issues/2530.html">2530</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>C++23</td>
<td>Multiple definitions of enumerators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2531">
<td><a href="https://cplusplus.github.io/CWG/issues/2531.html">2531</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>CD7</td>
<td>Static data members redeclared as constexpr</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2532">
<td><a href="https://cplusplus.github.io/CWG/issues/2532.html">2532</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>open</td>
<td>Kind of pointer value returned by <TT>new T[0]</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr id="2533">
<td><a href="https://cplusplus.github.io/CWG/issues/2533.html">2533</a></td>
+ <td>[<a href="https://wg21.link/basic.stc">basic.stc</a>]</td>
<td>CD7</td>
<td>Storage duration of implicitly created objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2534">
<td><a href="https://cplusplus.github.io/CWG/issues/2534.html">2534</a></td>
+ <td>[<a href="https://wg21.link/expr.ref">expr.ref</a>]</td>
<td>CD6</td>
<td>Value category of pseudo-destructor expression</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2535">
<td><a href="https://cplusplus.github.io/CWG/issues/2535.html">2535</a></td>
+ <td>[<a href="https://wg21.link/expr.ref">expr.ref</a>]</td>
<td>CD6</td>
<td>Type punning in class member access</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2536">
<td><a href="https://cplusplus.github.io/CWG/issues/2536.html">2536</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>open</td>
<td>Partially initialized variables during constant initialization</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2537">
<td><a href="https://cplusplus.github.io/CWG/issues/2537.html">2537</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>drafting</td>
<td>Overbroad grammar for <I>parameter-declaration</I></td>
<td align="center">Not resolved</td>
</tr>
<tr id="2538">
<td><a href="https://cplusplus.github.io/CWG/issues/2538.html">2538</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.grammar">dcl.attr.grammar</a>]</td>
<td>C++23</td>
<td>Can standard attributes be syntactically ignored?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2539">
<td><a href="https://cplusplus.github.io/CWG/issues/2539.html">2539</a></td>
+ <td>[<a href="https://wg21.link/class.spaceship">class.spaceship</a>]</td>
<td>C++23</td>
<td>Three-way comparison requiring strong ordering for floating-point types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2540">
<td><a href="https://cplusplus.github.io/CWG/issues/2540.html">2540</a></td>
+ <td>[<a href="https://wg21.link/lex.ccon">lex.ccon</a>]</td>
<td>CD6</td>
<td>Unspecified interpretation of <I>numeric-escape-sequence</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2541">
<td><a href="https://cplusplus.github.io/CWG/issues/2541.html">2541</a></td>
+ <td>[<a href="https://wg21.link/module.unit">module.unit</a>]</td>
<td>open</td>
<td>Linkage specifications, module purview, and module attachment</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2542">
<td><a href="https://cplusplus.github.io/CWG/issues/2542.html">2542</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD7</td>
<td>Is a closure type a structural type?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2543">
<td><a href="https://cplusplus.github.io/CWG/issues/2543.html">2543</a></td>
+ <td>[<a href="https://wg21.link/dcl.constinit">dcl.constinit</a>]</td>
<td>C++23</td>
<td><TT>constinit</TT> and optimized dynamic initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2544">
<td><a href="https://cplusplus.github.io/CWG/issues/2544.html">2544</a></td>
+ <td>[<a href="https://wg21.link/basic.compound">basic.compound</a>]</td>
<td>open</td>
<td>Address of past-the-end of a potentially-overlapping subobject</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2545">
<td><a href="https://cplusplus.github.io/CWG/issues/2545.html">2545</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>open</td>
<td>Transparently replacing objects in constant expressions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2546">
<td><a href="https://cplusplus.github.io/CWG/issues/2546.html">2546</a></td>
+ <td>[<a href="https://wg21.link/class.compare.secondary">class.compare.secondary</a>]</td>
<td>CD7</td>
<td>Defaulted secondary comparison operators defined as deleted</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2547">
<td><a href="https://cplusplus.github.io/CWG/issues/2547.html">2547</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>CD7</td>
<td>Defaulted comparison operator function for non-classes</td>
<td class="full" align="center">Clang 20</td>
</tr>
<tr id="2548">
<td><a href="https://cplusplus.github.io/CWG/issues/2548.html">2548</a></td>
+ <td>[<a href="https://wg21.link/expr.add">expr.add</a>]</td>
<td>NAD</td>
<td>Array prvalues and additive operators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2549">
<td><a href="https://cplusplus.github.io/CWG/issues/2549.html">2549</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.id.qual">expr.prim.id.qual</a>]</td>
<td>CD7</td>
<td>Implicitly moving the operand of a <I>throw-expression</I> in unevaluated contexts</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2550">
<td><a href="https://cplusplus.github.io/CWG/issues/2550.html">2550</a></td>
+ <td>[<a href="https://wg21.link/dcl.ref">dcl.ref</a>]</td>
<td>CD7</td>
<td>Type "reference to <I>cv</I> <TT>void</TT>" outside of a declarator</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2551">
<td><a href="https://cplusplus.github.io/CWG/issues/2551.html">2551</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>review</td>
<td>"Refers to allocated storage" has no meaning</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2552">
<td><a href="https://cplusplus.github.io/CWG/issues/2552.html">2552</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD7</td>
<td>Constant evaluation of non-defining variable declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2553">
<td><a href="https://cplusplus.github.io/CWG/issues/2553.html">2553</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>review</td>
<td>Restrictions on explicit object member functions</td>
<td align="center">
@@ -15161,6 +17672,7 @@ and <I>POD class</I></td>
</tr>
<tr class="open" id="2554">
<td><a href="https://cplusplus.github.io/CWG/issues/2554.html">2554</a></td>
+ <td>[<a href="https://wg21.link/class.virtual">class.virtual</a>]</td>
<td>review</td>
<td>Overriding virtual functions, also with explicit object parameters</td>
<td align="center">
@@ -15171,66 +17683,77 @@ and <I>POD class</I></td>
</tr>
<tr class="open" id="2555">
<td><a href="https://cplusplus.github.io/CWG/issues/2555.html">2555</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>tentatively ready</td>
<td>Ineffective redeclaration prevention for <I>using-declarator</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2556">
<td><a href="https://cplusplus.github.io/CWG/issues/2556.html">2556</a></td>
+ <td>[<a href="https://wg21.link/stmt.return.coroutine">stmt.return.coroutine</a>]</td>
<td>CD7</td>
<td>Unusable <TT>promise::return_void</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2557">
<td><a href="https://cplusplus.github.io/CWG/issues/2557.html">2557</a></td>
+ <td>[<a href="https://wg21.link/expr.ref">expr.ref</a>]</td>
<td>review</td>
<td>Class member access referring to an unrelated class</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2558">
<td><a href="https://cplusplus.github.io/CWG/issues/2558.html">2558</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++23</td>
<td>Uninitialized subobjects as a result of an immediate invocation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2559">
<td><a href="https://cplusplus.github.io/CWG/issues/2559.html">2559</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>open</td>
<td>Defaulted consteval functions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2560">
<td><a href="https://cplusplus.github.io/CWG/issues/2560.html">2560</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.req.general">expr.prim.req.general</a>]</td>
<td>CD7</td>
<td>Parameter type determination in a <I>requirement-parameter-list</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2561">
<td><a href="https://cplusplus.github.io/CWG/issues/2561.html">2561</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD7</td>
<td>Conversion to function pointer for lambda with explicit object parameter</td>
<td class="none" align="center">No</td>
</tr>
<tr class="open" id="2562">
<td><a href="https://cplusplus.github.io/CWG/issues/2562.html">2562</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.coroutine">dcl.fct.def.coroutine</a>]</td>
<td>open</td>
<td>Exceptions thrown during coroutine startup</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2563">
<td><a href="https://cplusplus.github.io/CWG/issues/2563.html">2563</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.coroutine">dcl.fct.def.coroutine</a>]</td>
<td>review</td>
<td>Initialization of coroutine result object</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2564">
<td><a href="https://cplusplus.github.io/CWG/issues/2564.html">2564</a></td>
+ <td>[<a href="https://wg21.link/over.call.object">over.call.object</a>]</td>
<td>drafting</td>
<td>Conversion to function pointer with an explicit object parameter</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2565">
<td><a href="https://cplusplus.github.io/CWG/issues/2565.html">2565</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.req.general">expr.prim.req.general</a>]</td>
<td>open</td>
<td>Invalid types in the <I>parameter-declaration-clause</I> of a <I>requires-expression</I></td>
<td align="center">
@@ -15241,1231 +17764,1435 @@ and <I>POD class</I></td>
</tr>
<tr class="open" id="2566">
<td><a href="https://cplusplus.github.io/CWG/issues/2566.html">2566</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>review</td>
<td>Matching deallocation for uncaught exception</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2567">
<td><a href="https://cplusplus.github.io/CWG/issues/2567.html">2567</a></td>
+ <td>[<a href="https://wg21.link/class.member.lookup">class.member.lookup</a>]</td>
<td>NAD</td>
<td>Operator lookup ambiguity</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2568">
<td><a href="https://cplusplus.github.io/CWG/issues/2568.html">2568</a></td>
+ <td>[<a href="https://wg21.link/class.compare.default">class.compare.default</a>]</td>
<td>CD7</td>
<td>Access checking during synthesis of defaulted comparison operator</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2569">
<td><a href="https://cplusplus.github.io/CWG/issues/2569.html">2569</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.id.unqual">expr.prim.id.unqual</a>]</td>
<td>CD6</td>
<td>Use of <code>decltype(capture)</code> in a lambda's <I>parameter-declaration-clause</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2570">
<td><a href="https://cplusplus.github.io/CWG/issues/2570.html">2570</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>CD7</td>
<td>Clarify constexpr for defaulted functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2571">
<td><a href="https://cplusplus.github.io/CWG/issues/2571.html">2571</a></td>
+ <td>[<a href="https://wg21.link/expr.sub">expr.sub</a>]</td>
<td>CD6</td>
<td>Evaluation order for subscripting</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2572">
<td><a href="https://cplusplus.github.io/CWG/issues/2572.html">2572</a></td>
+ <td>[<a href="https://wg21.link/over.over">over.over</a>]</td>
<td>review</td>
<td>Address of overloaded function with no target</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2573">
<td><a href="https://cplusplus.github.io/CWG/issues/2573.html">2573</a></td>
+ <td>[<a href="https://wg21.link/lex.phases">lex.phases</a>]</td>
<td>CD7</td>
<td>Undefined behavior when splicing results in a <I>universal-character-name</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2574">
<td><a href="https://cplusplus.github.io/CWG/issues/2574.html">2574</a></td>
+ <td>[<a href="https://wg21.link/lex.pptoken">lex.pptoken</a>]</td>
<td>CD7</td>
<td>Undefined behavior when lexing unmatched quotes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2575">
<td><a href="https://cplusplus.github.io/CWG/issues/2575.html">2575</a></td>
+ <td>[<a href="https://wg21.link/cpp.cond">cpp.cond</a>]</td>
<td>open</td>
<td>Undefined behavior when macro-replacing "defined" operator</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2576">
<td><a href="https://cplusplus.github.io/CWG/issues/2576.html">2576</a></td>
+ <td>[<a href="https://wg21.link/cpp.include">cpp.include</a>]</td>
<td>open</td>
<td>Undefined behavior with macro-expanded <TT>#include</TT> directives</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2577">
<td><a href="https://cplusplus.github.io/CWG/issues/2577.html">2577</a></td>
+ <td>[<a href="https://wg21.link/cpp.replace.general">cpp.replace.general</a>]</td>
<td>open</td>
<td>Undefined behavior for preprocessing directives in macro arguments</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2578">
<td><a href="https://cplusplus.github.io/CWG/issues/2578.html">2578</a></td>
+ <td>[<a href="https://wg21.link/cpp.stringize">cpp.stringize</a>]</td>
<td>CD7</td>
<td>Undefined behavior when creating an invalid string literal via stringizing</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2579">
<td><a href="https://cplusplus.github.io/CWG/issues/2579.html">2579</a></td>
+ <td>[<a href="https://wg21.link/cpp.concat">cpp.concat</a>]</td>
<td>CD7</td>
<td>Undefined behavior when token pasting does not create a preprocessing token</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2580">
<td><a href="https://cplusplus.github.io/CWG/issues/2580.html">2580</a></td>
+ <td>[<a href="https://wg21.link/cpp.line">cpp.line</a>]</td>
<td>CD7</td>
<td>Undefined behavior with <TT>#line</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2581">
<td><a href="https://cplusplus.github.io/CWG/issues/2581.html">2581</a></td>
+ <td>[<a href="https://wg21.link/cpp.predefined">cpp.predefined</a>]</td>
<td>open</td>
<td>Undefined behavior for predefined macros</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2582">
<td><a href="https://cplusplus.github.io/CWG/issues/2582.html">2582</a></td>
+ <td>[<a href="https://wg21.link/class.member.lookup">class.member.lookup</a>]</td>
<td>CD6</td>
<td>Differing member lookup from nested classes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2583">
<td><a href="https://cplusplus.github.io/CWG/issues/2583.html">2583</a></td>
+ <td>[<a href="https://wg21.link/class.mem.general">class.mem.general</a>]</td>
<td>C++23</td>
<td>Common initial sequence should consider over-alignment</td>
<td class="full" align="center">Clang 19</td>
</tr>
<tr class="open" id="2584">
<td><a href="https://cplusplus.github.io/CWG/issues/2584.html">2584</a></td>
+ <td>[<a href="https://wg21.link/temp.over.link">temp.over.link</a>]</td>
<td>open</td>
<td>Equivalent types in function template declarations</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2585">
<td><a href="https://cplusplus.github.io/CWG/issues/2585.html">2585</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.coroutine">dcl.fct.def.coroutine</a>]</td>
<td>CD6</td>
<td>Name lookup for coroutine allocation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2586">
<td><a href="https://cplusplus.github.io/CWG/issues/2586.html">2586</a></td>
+ <td>[<a href="https://wg21.link/class.compare.default">class.compare.default</a>]</td>
<td>CD6</td>
<td>Explicit object parameter for assignment and comparison</td>
<td class="full" align="center">Clang 20</td>
</tr>
<tr class="open" id="2587">
<td><a href="https://cplusplus.github.io/CWG/issues/2587.html">2587</a></td>
+ <td>[<a href="https://wg21.link/intro.races">intro.races</a>]</td>
<td>review</td>
<td>Visible side effects and initial value of an object</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2588">
<td><a href="https://cplusplus.github.io/CWG/issues/2588.html">2588</a></td>
+ <td>[<a href="https://wg21.link/class.friend">class.friend</a>]</td>
<td>CD7</td>
<td>friend declarations and module linkage</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2589">
<td><a href="https://cplusplus.github.io/CWG/issues/2589.html">2589</a></td>
+ <td>[<a href="https://wg21.link/temp.constr.atomic">temp.constr.atomic</a>]</td>
<td>review</td>
<td>Context of access checks during constraint satisfaction checking</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2590">
<td><a href="https://cplusplus.github.io/CWG/issues/2590.html">2590</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>C++23</td>
<td>Underlying type should determine size and alignment requirements of an enum</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2591">
<td><a href="https://cplusplus.github.io/CWG/issues/2591.html">2591</a></td>
+ <td>[<a href="https://wg21.link/class.union.general">class.union.general</a>]</td>
<td>CD7</td>
<td>Implicit change of active union member for anonymous union in union</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2592">
<td><a href="https://cplusplus.github.io/CWG/issues/2592.html">2592</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>open</td>
<td>Missing definition for placement allocation/deallocation function</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2593">
<td><a href="https://cplusplus.github.io/CWG/issues/2593.html">2593</a></td>
+ <td>[<a href="https://wg21.link/expr.mptr.oper">expr.mptr.oper</a>]</td>
<td>review</td>
<td>Insufficient base class restriction for pointer-to-member expression</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2594">
<td><a href="https://cplusplus.github.io/CWG/issues/2594.html">2594</a></td>
+ <td>[<a href="https://wg21.link/basic.start.main">basic.start.main</a>]</td>
<td>CD6</td>
<td>Disallowing a global function template <TT>main</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2595">
<td><a href="https://cplusplus.github.io/CWG/issues/2595.html">2595</a></td>
+ <td>[<a href="https://wg21.link/special">special</a>]</td>
<td>CD7</td>
<td>"More constrained" for eligible special member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2596">
<td><a href="https://cplusplus.github.io/CWG/issues/2596.html">2596</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>drafting</td>
<td>Instantiation of constrained non-template friends</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2597">
<td><a href="https://cplusplus.github.io/CWG/issues/2597.html">2597</a></td>
+ <td>[<a href="https://wg21.link/module.unit">module.unit</a>]</td>
<td>CD6</td>
<td>Replaceable allocation and deallocation functions in the global module</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2598">
<td><a href="https://cplusplus.github.io/CWG/issues/2598.html">2598</a></td>
+ <td>[<a href="https://wg21.link/basic.types.general">basic.types.general</a>]</td>
<td>C++23</td>
<td>Unions should not require a non-static data member of literal type</td>
<td class="full" align="center">Clang 18</td>
</tr>
<tr id="2599">
<td><a href="https://cplusplus.github.io/CWG/issues/2599.html">2599</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>C++23</td>
<td>What does initializing a parameter include?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2600">
<td><a href="https://cplusplus.github.io/CWG/issues/2600.html">2600</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.expr">temp.dep.expr</a>]</td>
<td>CD7</td>
<td>Type dependency of placeholder types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2601">
<td><a href="https://cplusplus.github.io/CWG/issues/2601.html">2601</a></td>
+ <td>[<a href="https://wg21.link/except.ctor">except.ctor</a>]</td>
<td>C++23</td>
<td>Tracking of created and destroyed subobjects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2602">
<td><a href="https://cplusplus.github.io/CWG/issues/2602.html">2602</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>C++23</td>
<td>consteval defaulted functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2603">
<td><a href="https://cplusplus.github.io/CWG/issues/2603.html">2603</a></td>
+ <td>[<a href="https://wg21.link/temp.over.link">temp.over.link</a>]</td>
<td>C++23</td>
<td>Holistic functional equivalence for function templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2604">
<td><a href="https://cplusplus.github.io/CWG/issues/2604.html">2604</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>C++23</td>
<td>Attributes for an explicit specialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2605">
<td><a href="https://cplusplus.github.io/CWG/issues/2605.html">2605</a></td>
+ <td>[<a href="https://wg21.link/class.prop">class.prop</a>]</td>
<td>C++23</td>
<td>Implicit-lifetime aggregates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2606">
<td><a href="https://cplusplus.github.io/CWG/issues/2606.html">2606</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>CD6</td>
<td><TT>static_cast</TT> from "pointer to void" does not handle similar types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2607">
<td><a href="https://cplusplus.github.io/CWG/issues/2607.html">2607</a></td>
+ <td>[<a href="https://wg21.link/module.interface">module.interface</a>]</td>
<td>drafting</td>
<td>Visibility of enumerator names</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2608">
<td><a href="https://cplusplus.github.io/CWG/issues/2608.html">2608</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.explicit">temp.arg.explicit</a>]</td>
<td>CD6</td>
<td>Omitting an empty template argument list</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2609">
<td><a href="https://cplusplus.github.io/CWG/issues/2609.html">2609</a></td>
+ <td>[<a href="https://wg21.link/expr.sizeof">expr.sizeof</a>]</td>
<td>open</td>
<td>Padding in class types</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2610">
<td><a href="https://cplusplus.github.io/CWG/issues/2610.html">2610</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>C++23</td>
<td>Indirect private base classes in aggregates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2611">
<td><a href="https://cplusplus.github.io/CWG/issues/2611.html">2611</a></td>
+ <td>[<a href="https://wg21.link/temp.variadic">temp.variadic</a>]</td>
<td>C++23</td>
<td>Missing parentheses in expansion of fold-expression could cause syntactic reinterpretation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2612">
<td><a href="https://cplusplus.github.io/CWG/issues/2612.html">2612</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.general">dcl.init.general</a>]</td>
<td>C++23</td>
<td>Incorrect comment in example</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2613">
<td><a href="https://cplusplus.github.io/CWG/issues/2613.html">2613</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.coroutine">dcl.fct.def.coroutine</a>]</td>
<td>C++23</td>
<td>Incomplete definition of resumer</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2614">
<td><a href="https://cplusplus.github.io/CWG/issues/2614.html">2614</a></td>
+ <td>[<a href="https://wg21.link/expr.ref">expr.ref</a>]</td>
<td>C++23</td>
<td>Unspecified results for class member access</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2615">
<td><a href="https://cplusplus.github.io/CWG/issues/2615.html">2615</a></td>
+ <td>[<a href="https://wg21.link/cpp.cond">cpp.cond</a>]</td>
<td>C++23</td>
<td>Missing <TT>__has_cpp_attribute(assume)</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2616">
<td><a href="https://cplusplus.github.io/CWG/issues/2616.html">2616</a></td>
+ <td>[<a href="https://wg21.link/stmt">stmt</a>]</td>
<td>C++23</td>
<td>Imprecise restrictions on <TT>break</TT> and <TT>continue</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2617">
<td><a href="https://cplusplus.github.io/CWG/issues/2617.html">2617</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>review</td>
<td>Default template arguments for template members of non-template classes</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2618">
<td><a href="https://cplusplus.github.io/CWG/issues/2618.html">2618</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.general">temp.deduct.general</a>]</td>
<td>C++23</td>
<td>Substitution during deduction should exclude exception specifications</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2619">
<td><a href="https://cplusplus.github.io/CWG/issues/2619.html">2619</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.aggr">dcl.init.aggr</a>]</td>
<td>C++23</td>
<td>Kind of initialization for a <I>designated-initializer-list</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2620">
<td><a href="https://cplusplus.github.io/CWG/issues/2620.html">2620</a></td>
+ <td>[<a href="https://wg21.link/dcl.ambig.res">dcl.ambig.res</a>]</td>
<td>C++23</td>
<td>Nonsensical disambiguation rule</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2621">
<td><a href="https://cplusplus.github.io/CWG/issues/2621.html">2621</a></td>
+ <td>[<a href="https://wg21.link/enum.udecl">enum.udecl</a>]</td>
<td>C++23</td>
<td>Kind of lookup for <TT>using enum</TT> declarations</td>
<td class="full-superseded" align="center">Superseded by <a href="#2877">2877</a></td>
</tr>
<tr id="2622">
<td><a href="https://cplusplus.github.io/CWG/issues/2622.html">2622</a></td>
+ <td>[<a href="https://wg21.link/implimits">implimits</a>]</td>
<td>C++23</td>
<td>Compounding types from function and pointer-to-member types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2623">
<td><a href="https://cplusplus.github.io/CWG/issues/2623.html">2623</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>drafting</td>
<td>Invoking destroying <TT>operator delete</TT> for constructor failure</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2624">
<td><a href="https://cplusplus.github.io/CWG/issues/2624.html">2624</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>C++23</td>
<td>Array delete expression with no array cookie</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2625">
<td><a href="https://cplusplus.github.io/CWG/issues/2625.html">2625</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>C++23</td>
<td>Deletion of pointer to out-of-lifetime object</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2626">
<td><a href="https://cplusplus.github.io/CWG/issues/2626.html">2626</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.op">expr.unary.op</a>]</td>
<td>C++23</td>
<td>Rephrase ones' complement using base-2 representation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2627">
<td><a href="https://cplusplus.github.io/CWG/issues/2627.html">2627</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>C++23</td>
<td>Bit-fields and narrowing conversions</td>
<td class="full" align="center">Clang 20</td>
</tr>
<tr id="2628">
<td><a href="https://cplusplus.github.io/CWG/issues/2628.html">2628</a></td>
+ <td>[<a href="https://wg21.link/over.match.class.deduct">over.match.class.deduct</a>]</td>
<td>CD7</td>
<td>Implicit deduction guides should propagate constraints</td>
<td class="full" align="center">Clang 20</td>
</tr>
<tr id="2629">
<td><a href="https://cplusplus.github.io/CWG/issues/2629.html">2629</a></td>
+ <td>[<a href="https://wg21.link/stmt.switch">stmt.switch</a>]</td>
<td>C++23</td>
<td>Variables of floating-point type as <TT>switch</TT> conditions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2630">
<td><a href="https://cplusplus.github.io/CWG/issues/2630.html">2630</a></td>
+ <td>[<a href="https://wg21.link/class.mem.general">class.mem.general</a>]</td>
<td>C++23</td>
<td>Syntactic specification of class completeness</td>
<td class="full" align="center">Clang 9</td>
</tr>
<tr id="2631">
<td><a href="https://cplusplus.github.io/CWG/issues/2631.html">2631</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++23</td>
<td>Immediate function evaluations in default arguments</td>
<td class="full" align="center">Clang 16</td>
</tr>
<tr class="open" id="2632">
<td><a href="https://cplusplus.github.io/CWG/issues/2632.html">2632</a></td>
+ <td>[<a href="https://wg21.link/intro.defs">intro.defs</a>]</td>
<td>drafting</td>
<td>'user-declared' is not defined</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2633">
<td><a href="https://cplusplus.github.io/CWG/issues/2633.html">2633</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>open</td>
<td>typeid of constexpr-unknown dynamic type</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2634">
<td><a href="https://cplusplus.github.io/CWG/issues/2634.html">2634</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.elab">dcl.type.elab</a>]</td>
<td>CD7</td>
<td>Avoid circularity in specification of scope for friend class declarations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2635">
<td><a href="https://cplusplus.github.io/CWG/issues/2635.html">2635</a></td>
+ <td>[<a href="https://wg21.link/dcl.pre">dcl.pre</a>]</td>
<td>C++23</td>
<td>Constrained structured bindings</td>
<td class="full" align="center">Clang 16</td>
</tr>
<tr id="2636">
<td><a href="https://cplusplus.github.io/CWG/issues/2636.html">2636</a></td>
+ <td>[<a href="https://wg21.link/ub">ub</a>]</td>
<td>C++23</td>
<td>Update Annex E based on Unicode 15.0 UAX #31</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="2637">
<td><a href="https://cplusplus.github.io/CWG/issues/2637.html">2637</a></td>
+ <td>[<a href="https://wg21.link/class.pre">class.pre</a>]</td>
<td>CD7</td>
<td>Injected-class-name as a <I>simple-template-id</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2638">
<td><a href="https://cplusplus.github.io/CWG/issues/2638.html">2638</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD7</td>
<td>Improve the example for initializing by initializer list</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2639">
<td><a href="https://cplusplus.github.io/CWG/issues/2639.html">2639</a></td>
+ <td>[<a href="https://wg21.link/lex.phases">lex.phases</a>]</td>
<td>C++23</td>
<td>new-lines after phase 1</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2640">
<td><a href="https://cplusplus.github.io/CWG/issues/2640.html">2640</a></td>
+ <td>[<a href="https://wg21.link/lex.charset">lex.charset</a>]</td>
<td>C++23</td>
<td>Allow more characters in an n-char sequence</td>
<td class="full" align="center">Clang 16</td>
</tr>
<tr id="2641">
<td><a href="https://cplusplus.github.io/CWG/issues/2641.html">2641</a></td>
+ <td>[<a href="https://wg21.link/lex.literal">lex.literal</a>]</td>
<td>C++23</td>
<td>Redundant specification of value category of literals</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2642">
<td><a href="https://cplusplus.github.io/CWG/issues/2642.html">2642</a></td>
+ <td>[<a href="https://wg21.link/class.member.lookup">class.member.lookup</a>]</td>
<td>C++23</td>
<td>Inconsistent use of T and C</td>
<td class="na" align="center">N/A</td>
</tr>
<tr id="2643">
<td><a href="https://cplusplus.github.io/CWG/issues/2643.html">2643</a></td>
+ <td>[<a href="https://wg21.link/basic.types.general">basic.types.general</a>]</td>
<td>C++23</td>
<td>Completing a pointer to array of unknown bound</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2644">
<td><a href="https://cplusplus.github.io/CWG/issues/2644.html">2644</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>C++23</td>
<td>Incorrect comment in example</td>
<td class="full" align="center">Clang 8</td>
</tr>
<tr id="2645">
<td><a href="https://cplusplus.github.io/CWG/issues/2645.html">2645</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>C++23</td>
<td>Unused term "default argument promotions"</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2646">
<td><a href="https://cplusplus.github.io/CWG/issues/2646.html">2646</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>C++23</td>
<td>Defaulted special member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2647">
<td><a href="https://cplusplus.github.io/CWG/issues/2647.html">2647</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++23</td>
<td>Fix for "needed for constant evaluation"</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2648">
<td><a href="https://cplusplus.github.io/CWG/issues/2648.html">2648</a></td>
+ <td>[<a href="https://wg21.link/over.call">over.call</a>]</td>
<td>C++23</td>
<td>Correspondence of surrogate call function and conversion function</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2649">
<td><a href="https://cplusplus.github.io/CWG/issues/2649.html">2649</a></td>
+ <td>[<a href="https://wg21.link/over.call.object">over.call.object</a>]</td>
<td>C++23</td>
<td>Incorrect note about implicit conversion sequence</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2650">
<td><a href="https://cplusplus.github.io/CWG/issues/2650.html">2650</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.general">temp.deduct.general</a>]</td>
<td>C++23</td>
<td>Incorrect example for ill-formed non-type template arguments</td>
<td class="full" align="center">Clang 17</td>
</tr>
<tr id="2651">
<td><a href="https://cplusplus.github.io/CWG/issues/2651.html">2651</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.conv">temp.deduct.conv</a>]</td>
<td>C++23</td>
<td>Conversion function templates and "noexcept"</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2652">
<td><a href="https://cplusplus.github.io/CWG/issues/2652.html">2652</a></td>
+ <td>[<a href="https://wg21.link/cpp.predefined">cpp.predefined</a>]</td>
<td>C++23</td>
<td>Overbroad definition of <TT>__STDCPP_BFLOAT16_T__</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2653">
<td><a href="https://cplusplus.github.io/CWG/issues/2653.html">2653</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>C++23</td>
<td>Can an explicit object parameter have a default argument?</td>
<td class="full" align="center">Clang 18</td>
</tr>
<tr id="2654">
<td><a href="https://cplusplus.github.io/CWG/issues/2654.html">2654</a></td>
+ <td>[<a href="https://wg21.link/expr.assign">expr.assign</a>]</td>
<td>C++23</td>
<td>Un-deprecation of compound volatile assignments</td>
<td class="full" align="center">Clang 16</td>
</tr>
<tr id="2655">
<td><a href="https://cplusplus.github.io/CWG/issues/2655.html">2655</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>NAD</td>
<td>Instantiation of default arguments in <I>lambda-expression</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2656">
<td><a href="https://cplusplus.github.io/CWG/issues/2656.html">2656</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>drafting</td>
<td>Converting consteval lambda to function pointer in non-immediate context</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2657">
<td><a href="https://cplusplus.github.io/CWG/issues/2657.html">2657</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD7</td>
<td>Cv-qualification adjustment when binding reference to temporary</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2658">
<td><a href="https://cplusplus.github.io/CWG/issues/2658.html">2658</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>C++23</td>
<td>Trivial copying of unions in core constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2659">
<td><a href="https://cplusplus.github.io/CWG/issues/2659.html">2659</a></td>
+ <td>[<a href="https://wg21.link/cpp.predefined">cpp.predefined</a>]</td>
<td>C++23</td>
<td>Missing feature-test macro for lifetime extension in range-for loop</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2660">
<td><a href="https://cplusplus.github.io/CWG/issues/2660.html">2660</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>open</td>
<td>Confusing term "this parameter"</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2661">
<td><a href="https://cplusplus.github.io/CWG/issues/2661.html">2661</a></td>
+ <td>[<a href="https://wg21.link/class.mem.general">class.mem.general</a>]</td>
<td>CD7</td>
<td>Missing disambiguation rule for <I>pure-specifier</I> vs. <I>brace-or-equal-initializer</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2662">
<td><a href="https://cplusplus.github.io/CWG/issues/2662.html">2662</a></td>
+ <td>[<a href="https://wg21.link/class.access.general">class.access.general</a>]</td>
<td>C++23</td>
<td>Example for member access control vs. overload resolution</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2663">
<td><a href="https://cplusplus.github.io/CWG/issues/2663.html">2663</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>CD7</td>
<td>Example for member redeclarations with <I>using-declaration</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2664">
<td><a href="https://cplusplus.github.io/CWG/issues/2664.html">2664</a></td>
+ <td>[<a href="https://wg21.link/over.match.class.deduct">over.match.class.deduct</a>]</td>
<td>C++23</td>
<td>Deduction failure in CTAD for alias templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2665">
<td><a href="https://cplusplus.github.io/CWG/issues/2665.html">2665</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>NAD</td>
<td>Replacing a subobject with a complete object</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2666">
<td><a href="https://cplusplus.github.io/CWG/issues/2666.html">2666</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>open</td>
<td>Lifetime extension through <TT>static_cast</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr id="2667">
<td><a href="https://cplusplus.github.io/CWG/issues/2667.html">2667</a></td>
+ <td>[<a href="https://wg21.link/cpp.import">cpp.import</a>]</td>
<td>C++23</td>
<td>Named module imports do not import macros</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2668">
<td><a href="https://cplusplus.github.io/CWG/issues/2668.html">2668</a></td>
+ <td>[<a href="https://wg21.link/expr.await">expr.await</a>]</td>
<td>CD7</td>
<td><TT>co_await</TT> in a <I>lambda-expression</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2669">
<td><a href="https://cplusplus.github.io/CWG/issues/2669.html">2669</a></td>
+ <td>[<a href="https://wg21.link/class.base.init">class.base.init</a>]</td>
<td>open</td>
<td>Lifetime extension for aggregate initialization</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2670">
<td><a href="https://cplusplus.github.io/CWG/issues/2670.html">2670</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>open</td>
<td>Programs and translation units</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2671">
<td><a href="https://cplusplus.github.io/CWG/issues/2671.html">2671</a></td>
+ <td>[<a href="https://wg21.link/dcl.meaning.general">dcl.meaning.general</a>]</td>
<td>open</td>
<td>friend named by a <I>template-id</I></td>
<td align="center">Not resolved</td>
</tr>
<tr id="2672">
<td><a href="https://cplusplus.github.io/CWG/issues/2672.html">2672</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.general">temp.deduct.general</a>]</td>
<td>CD7</td>
<td>Lambda body SFINAE is still required, contrary to intent and note</td>
<td class="full" align="center">Clang 18</td>
</tr>
<tr id="2673">
<td><a href="https://cplusplus.github.io/CWG/issues/2673.html">2673</a></td>
+ <td>[<a href="https://wg21.link/over.match.oper">over.match.oper</a>]</td>
<td>C++23</td>
<td>User-declared spaceship vs. built-in operators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2674">
<td><a href="https://cplusplus.github.io/CWG/issues/2674.html">2674</a></td>
+ <td>[<a href="https://wg21.link/class.ctor.general">class.ctor.general</a>]</td>
<td>C++23</td>
<td>Prohibit explicit object parameters for constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2675">
<td><a href="https://cplusplus.github.io/CWG/issues/2675.html">2675</a></td>
+ <td>[<a href="https://wg21.link/class.union.general">class.union.general</a>]</td>
<td>open</td>
<td><TT>start_lifetime_as</TT>, placement-new, and active union members</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2676">
<td><a href="https://cplusplus.github.io/CWG/issues/2676.html">2676</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>open</td>
<td>Replacing a complete object having base subobjects</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2677">
<td><a href="https://cplusplus.github.io/CWG/issues/2677.html">2677</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>review</td>
<td>Replacing union subobjects</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2678">
<td><a href="https://cplusplus.github.io/CWG/issues/2678.html">2678</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>C++23</td>
<td><TT>std::source_location::current</TT> is unimplementable</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2679">
<td><a href="https://cplusplus.github.io/CWG/issues/2679.html">2679</a></td>
+ <td>[<a href="https://wg21.link/over.best.ics.general">over.best.ics.general</a>]</td>
<td>open</td>
<td>Implicit conversion sequence with a null pointer constant</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2680">
<td><a href="https://cplusplus.github.io/CWG/issues/2680.html">2680</a></td>
+ <td>[<a href="https://wg21.link/over.match.class.deduct">over.match.class.deduct</a>]</td>
<td>open</td>
<td>Class template argument deduction for aggregates with designated initializers</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2681">
<td><a href="https://cplusplus.github.io/CWG/issues/2681.html">2681</a></td>
+ <td>[<a href="https://wg21.link/over.match.class.deduct">over.match.class.deduct</a>]</td>
<td>C++23</td>
<td>Deducing member array type from string literal</td>
<td class="full" align="center">Clang 17</td>
</tr>
<tr id="2682">
<td><a href="https://cplusplus.github.io/CWG/issues/2682.html">2682</a></td>
+ <td>[<a href="https://wg21.link/temp.pre">temp.pre</a>]</td>
<td>C++23</td>
<td>Templated function vs. function template</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2683">
<td><a href="https://cplusplus.github.io/CWG/issues/2683.html">2683</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>CD7</td>
<td>Default arguments for member functions of templated nested classes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2684">
<td><a href="https://cplusplus.github.io/CWG/issues/2684.html">2684</a></td>
+ <td>[<a href="https://wg21.link/basic.start.dynamic">basic.start.dynamic</a>]</td>
<td>open</td>
<td>thread_local dynamic initialization</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2685">
<td><a href="https://cplusplus.github.io/CWG/issues/2685.html">2685</a></td>
+ <td>[<a href="https://wg21.link/over.match.class.deduct">over.match.class.deduct</a>]</td>
<td>C++23</td>
<td>Aggregate CTAD, string, and brace elision</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2686">
<td><a href="https://cplusplus.github.io/CWG/issues/2686.html">2686</a></td>
+ <td>[<a href="https://wg21.link/temp.constr.constr">temp.constr.constr</a>]</td>
<td>open</td>
<td>Pack expansion into a non-pack parameter of a concept</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2687">
<td><a href="https://cplusplus.github.io/CWG/issues/2687.html">2687</a></td>
+ <td>[<a href="https://wg21.link/over.match.call.general">over.match.call.general</a>]</td>
<td>C++23</td>
<td>Calling an explicit object member function via an address-of-overload-set</td>
<td class="full" align="center">Clang 18</td>
</tr>
<tr class="open" id="2688">
<td><a href="https://cplusplus.github.io/CWG/issues/2688.html">2688</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>open</td>
<td>Calling explicit object member functions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2689">
<td><a href="https://cplusplus.github.io/CWG/issues/2689.html">2689</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>CD7</td>
<td>Are cv-qualified <TT>std::nullptr_t</TT> fundamental types?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2690">
<td><a href="https://cplusplus.github.io/CWG/issues/2690.html">2690</a></td>
+ <td>[<a href="https://wg21.link/class.copy.assign">class.copy.assign</a>]</td>
<td>C++23</td>
<td>Semantics of defaulted move assignment operator for unions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2691">
<td><a href="https://cplusplus.github.io/CWG/issues/2691.html">2691</a></td>
+ <td>[<a href="https://wg21.link/lex.ccon">lex.ccon</a>]</td>
<td>C++23</td>
<td><I>hexadecimal-escape-sequence</I> is too greedy</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2692">
<td><a href="https://cplusplus.github.io/CWG/issues/2692.html">2692</a></td>
+ <td>[<a href="https://wg21.link/over.match.call.general">over.match.call.general</a>]</td>
<td>C++23</td>
<td>Static and explicit object member functions with the same parameter-type-lists</td>
<td class="full" align="center">Clang 19</td>
</tr>
<tr class="open" id="2693">
<td><a href="https://cplusplus.github.io/CWG/issues/2693.html">2693</a></td>
+ <td>[<a href="https://wg21.link/cpp.line">cpp.line</a>]</td>
<td>open</td>
<td>Escape sequences for the <I>string-literal</I> of <TT>#line</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2694">
<td><a href="https://cplusplus.github.io/CWG/issues/2694.html">2694</a></td>
+ <td>[<a href="https://wg21.link/cpp.pragma.op">cpp.pragma.op</a>]</td>
<td>open</td>
<td><I>string-literal</I>s of the <TT>_Pragma</TT> operator</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2695">
<td><a href="https://cplusplus.github.io/CWG/issues/2695.html">2695</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.grammar">dcl.attr.grammar</a>]</td>
<td>C++23</td>
<td>Semantic ignorability of attributes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2696">
<td><a href="https://cplusplus.github.io/CWG/issues/2696.html">2696</a></td>
+ <td>[<a href="https://wg21.link/expr.rel">expr.rel</a>]</td>
<td>dup</td>
<td>Relational comparisons of pointers to <TT>void</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2697">
<td><a href="https://cplusplus.github.io/CWG/issues/2697.html">2697</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.guide">temp.deduct.guide</a>]</td>
<td>CD7</td>
<td>Deduction guides using abbreviated function syntax</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2698">
<td><a href="https://cplusplus.github.io/CWG/issues/2698.html">2698</a></td>
+ <td>[<a href="https://wg21.link/lex.icon">lex.icon</a>]</td>
<td>CD7</td>
<td>Using extended integer types with <TT>z</TT> suffix</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2699">
<td><a href="https://cplusplus.github.io/CWG/issues/2699.html">2699</a></td>
+ <td>[<a href="https://wg21.link/expr.throw">expr.throw</a>]</td>
<td>CD7</td>
<td>Inconsistency of <I>throw-expression</I> specification</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2700">
<td><a href="https://cplusplus.github.io/CWG/issues/2700.html">2700</a></td>
+ <td>[<a href="https://wg21.link/intro.compliance.general">intro.compliance.general</a>]</td>
<td>CD7</td>
<td><TT>#error</TT> disallows existing implementation practice</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2701">
<td><a href="https://cplusplus.github.io/CWG/issues/2701.html">2701</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>open</td>
<td>Default arguments in multiple scopes / inheritance of array bounds in the same scope</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2702">
<td><a href="https://cplusplus.github.io/CWG/issues/2702.html">2702</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>open</td>
<td>Constant destruction of reference members</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2703">
<td><a href="https://cplusplus.github.io/CWG/issues/2703.html">2703</a></td>
+ <td>[<a href="https://wg21.link/class.spaceship">class.spaceship</a>]</td>
<td>CD7</td>
<td>Three-way comparison requiring strong ordering for floating-point types, take 2</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2704">
<td><a href="https://cplusplus.github.io/CWG/issues/2704.html">2704</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>open</td>
<td>Clarify meaning of "bind directly"</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2705">
<td><a href="https://cplusplus.github.io/CWG/issues/2705.html">2705</a></td>
+ <td>[<a href="https://wg21.link/expr.ref">expr.ref</a>]</td>
<td>open</td>
<td>Accessing ambiguous subobjects</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2706">
<td><a href="https://cplusplus.github.io/CWG/issues/2706.html">2706</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>open</td>
<td>Repeated structured binding declarations</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2707">
<td><a href="https://cplusplus.github.io/CWG/issues/2707.html">2707</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.guide">temp.deduct.guide</a>]</td>
<td>CD7</td>
<td>Deduction guides cannot have a trailing <I>requires-clause</I></td>
<td class="full" align="center">Clang 20</td>
</tr>
<tr id="2708">
<td><a href="https://cplusplus.github.io/CWG/issues/2708.html">2708</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.general">dcl.init.general</a>]</td>
<td>CD7</td>
<td>Parenthesized initialization of arrays</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2709">
<td><a href="https://cplusplus.github.io/CWG/issues/2709.html">2709</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.general">dcl.init.general</a>]</td>
<td>NAD</td>
<td>Parenthesized initialization of reference-to-aggregate</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2710">
<td><a href="https://cplusplus.github.io/CWG/issues/2710.html">2710</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD7</td>
<td>Loops in constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2711">
<td><a href="https://cplusplus.github.io/CWG/issues/2711.html">2711</a></td>
+ <td>[<a href="https://wg21.link/expr.throw">expr.throw</a>]</td>
<td>CD7</td>
<td>Source for copy-initializing the exception object</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2712">
<td><a href="https://cplusplus.github.io/CWG/issues/2712.html">2712</a></td>
+ <td>[<a href="https://wg21.link/over.match.oper">over.match.oper</a>]</td>
<td>CD7</td>
<td>Simplify restrictions on built-in assignment operator candidates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2713">
<td><a href="https://cplusplus.github.io/CWG/issues/2713.html">2713</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD7</td>
<td>Initialization of reference-to-aggregate from designated initializer list</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2714">
<td><a href="https://cplusplus.github.io/CWG/issues/2714.html">2714</a></td>
+ <td>[<a href="https://wg21.link/over.match.class.deduct">over.match.class.deduct</a>]</td>
<td>CD7</td>
<td>Implicit deduction guides omit properties from the parameter-declaration-clause of a constructor</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2715">
<td><a href="https://cplusplus.github.io/CWG/issues/2715.html">2715</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>CD7</td>
<td>"calling function" for parameter initialization may not exist</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2716">
<td><a href="https://cplusplus.github.io/CWG/issues/2716.html">2716</a></td>
+ <td>[<a href="https://wg21.link/class.conv.fct">class.conv.fct</a>]</td>
<td>CD7</td>
<td>Rule about self-or-base conversion is normatively redundant</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2717">
<td><a href="https://cplusplus.github.io/CWG/issues/2717.html">2717</a></td>
+ <td>[<a href="https://wg21.link/temp.variadic">temp.variadic</a>]</td>
<td>CD7</td>
<td>Pack expansion for <I>alignment-specifier</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2718">
<td><a href="https://cplusplus.github.io/CWG/issues/2718.html">2718</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>CD7</td>
<td>Type completeness for derived-to-base conversions</td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="2719">
<td><a href="https://cplusplus.github.io/CWG/issues/2719.html">2719</a></td>
+ <td>[<a href="https://wg21.link/basic.align">basic.align</a>]</td>
<td>CD7</td>
<td>Creating objects in misaligned storage</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2720">
<td><a href="https://cplusplus.github.io/CWG/issues/2720.html">2720</a></td>
+ <td>[<a href="https://wg21.link/temp.res.general">temp.res.general</a>]</td>
<td>CD7</td>
<td>Template validity rules for templated entities and alias templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2721">
<td><a href="https://cplusplus.github.io/CWG/issues/2721.html">2721</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>CD7</td>
<td>When exactly is storage reused?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2722">
<td><a href="https://cplusplus.github.io/CWG/issues/2722.html">2722</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.noexcept">expr.unary.noexcept</a>]</td>
<td>CD7</td>
<td>Temporary materialization conversion for <TT>noexcept</TT> operator</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2723">
<td><a href="https://cplusplus.github.io/CWG/issues/2723.html">2723</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>CD7</td>
<td>Range of representable values for floating-point types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2724">
<td><a href="https://cplusplus.github.io/CWG/issues/2724.html">2724</a></td>
+ <td>[<a href="https://wg21.link/expr.shift">expr.shift</a>]</td>
<td>CD7</td>
<td>Clarify rounding for arithmetic right shift</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2725">
<td><a href="https://cplusplus.github.io/CWG/issues/2725.html">2725</a></td>
+ <td>[<a href="https://wg21.link/expr.ref">expr.ref</a>]</td>
<td>CD7</td>
<td>Overload resolution for non-call of class member access</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2726">
<td><a href="https://cplusplus.github.io/CWG/issues/2726.html">2726</a></td>
+ <td>[<a href="https://wg21.link/lex.digraph">lex.digraph</a>]</td>
<td>review</td>
<td>Alternative tokens appearing as <I>attribute-token</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2727">
<td><a href="https://cplusplus.github.io/CWG/issues/2727.html">2727</a></td>
+ <td>[<a href="https://wg21.link/module.import">module.import</a>]</td>
<td>open</td>
<td>Importing header units synthesized from source files</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2728">
<td><a href="https://cplusplus.github.io/CWG/issues/2728.html">2728</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>CD7</td>
<td>Evaluation of conversions in a <I>delete-expression</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2729">
<td><a href="https://cplusplus.github.io/CWG/issues/2729.html">2729</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>CD7</td>
<td>Meaning of <I>new-type-id</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2730">
<td><a href="https://cplusplus.github.io/CWG/issues/2730.html">2730</a></td>
+ <td>[<a href="https://wg21.link/over.match.oper">over.match.oper</a>]</td>
<td>open</td>
<td>Comparison templates on enumeration types</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2731">
<td><a href="https://cplusplus.github.io/CWG/issues/2731.html">2731</a></td>
+ <td>[<a href="https://wg21.link/over.ics.user">over.ics.user</a>]</td>
<td>open</td>
<td>List-initialization sequence with a user-defined conversion</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2732">
<td><a href="https://cplusplus.github.io/CWG/issues/2732.html">2732</a></td>
+ <td>[<a href="https://wg21.link/module.import">module.import</a>]</td>
<td>CD7</td>
<td>Can importable headers react to preprocessor state from point of import?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2733">
<td><a href="https://cplusplus.github.io/CWG/issues/2733.html">2733</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.unused">dcl.attr.unused</a>]</td>
<td>CD7</td>
<td>Applying <TT>[[maybe_unused]]</TT> to a label</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2734">
<td><a href="https://cplusplus.github.io/CWG/issues/2734.html">2734</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>open</td>
<td>Immediate forward-declared function templates</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2735">
<td><a href="https://cplusplus.github.io/CWG/issues/2735.html">2735</a></td>
+ <td>[<a href="https://wg21.link/over.match.best">over.match.best</a>]</td>
<td>open</td>
<td>List-initialization and conversions in overload resolution</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2736">
<td><a href="https://cplusplus.github.io/CWG/issues/2736.html">2736</a></td>
+ <td>[<a href="https://wg21.link/class.prop">class.prop</a>]</td>
<td>open</td>
<td>Standard layout class with empty base class also in first member</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2737">
<td><a href="https://cplusplus.github.io/CWG/issues/2737.html">2737</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.capture">expr.prim.lambda.capture</a>]</td>
<td>review</td>
<td>Temporary lifetime extension for reference init-captures</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2738">
<td><a href="https://cplusplus.github.io/CWG/issues/2738.html">2738</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.id.unqual">expr.prim.id.unqual</a>]</td>
<td>review</td>
<td>"denotes a destructor" is missing specification</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2739">
<td><a href="https://cplusplus.github.io/CWG/issues/2739.html">2739</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.req.nested">expr.prim.req.nested</a>]</td>
<td>open</td>
<td>Nested requirement not a constant expression</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2740">
<td><a href="https://cplusplus.github.io/CWG/issues/2740.html">2740</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>open</td>
<td>Too many objects have constexpr-unknown type</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2741">
<td><a href="https://cplusplus.github.io/CWG/issues/2741.html">2741</a></td>
+ <td>[<a href="https://wg21.link/over.ics.list">over.ics.list</a>]</td>
<td>open</td>
<td>Implicit conversion sequence from empty list to array of unknown bound</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2742">
<td><a href="https://cplusplus.github.io/CWG/issues/2742.html">2742</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>drafting</td>
<td>Guaranteed copy elision for brace-initialization from prvalue</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2743">
<td><a href="https://cplusplus.github.io/CWG/issues/2743.html">2743</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>open</td>
<td>Copying non-trivial objects nested within a union</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2744">
<td><a href="https://cplusplus.github.io/CWG/issues/2744.html">2744</a></td>
+ <td>[<a href="https://wg21.link/intro.object">intro.object</a>]</td>
<td>open</td>
<td>Multiple objects of the same type at the same address</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2745">
<td><a href="https://cplusplus.github.io/CWG/issues/2745.html">2745</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD7</td>
<td>Dependent odr-use in generic lambdas</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2746">
<td><a href="https://cplusplus.github.io/CWG/issues/2746.html">2746</a></td>
+ <td>[<a href="https://wg21.link/temp.res.general">temp.res.general</a>]</td>
<td>CD7</td>
<td>Checking of default template arguments</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2747">
<td><a href="https://cplusplus.github.io/CWG/issues/2747.html">2747</a></td>
+ <td>[<a href="https://wg21.link/lex.phases">lex.phases</a>]</td>
<td>CD7</td>
<td>Cannot depend on an already-deleted splice</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2748">
<td><a href="https://cplusplus.github.io/CWG/issues/2748.html">2748</a></td>
+ <td>[<a href="https://wg21.link/expr.ref">expr.ref</a>]</td>
<td>CD7</td>
<td>Accessing static data members via null pointer</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2749">
<td><a href="https://cplusplus.github.io/CWG/issues/2749.html">2749</a></td>
+ <td>[<a href="https://wg21.link/expr.rel">expr.rel</a>]</td>
<td>CD7</td>
<td>Treatment of "pointer to void" for relational comparisons</td>
<td class="full" align="center">Clang 20</td>
</tr>
<tr id="2750">
<td><a href="https://cplusplus.github.io/CWG/issues/2750.html">2750</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD7</td>
<td>construct_at without constructor call</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2751">
<td><a href="https://cplusplus.github.io/CWG/issues/2751.html">2751</a></td>
+ <td>[<a href="https://wg21.link/stmt.dcl">stmt.dcl</a>]</td>
<td>NAD</td>
<td>Order of destruction for parameters for operator functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2752">
<td><a href="https://cplusplus.github.io/CWG/issues/2752.html">2752</a></td>
+ <td>[<a href="https://wg21.link/lex.fcon">lex.fcon</a>]</td>
<td>open</td>
<td>Excess-precision floating-point literals</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2753">
<td><a href="https://cplusplus.github.io/CWG/issues/2753.html">2753</a></td>
+ <td>[<a href="https://wg21.link/intro.object">intro.object</a>]</td>
<td>CD7</td>
<td>Storage reuse for string literal objects and backing arrays</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2754">
<td><a href="https://cplusplus.github.io/CWG/issues/2754.html">2754</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.coroutine">dcl.fct.def.coroutine</a>]</td>
<td>CD7</td>
<td>Using *this in explicit object member functions that are coroutines</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2755">
<td><a href="https://cplusplus.github.io/CWG/issues/2755.html">2755</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD7</td>
<td>Incorrect wording applied by P2738R1</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2756">
<td><a href="https://cplusplus.github.io/CWG/issues/2756.html">2756</a></td>
+ <td>[<a href="https://wg21.link/class.init">class.init</a>]</td>
<td>review</td>
<td>Completion of initialization by delegating constructor</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2757">
<td><a href="https://cplusplus.github.io/CWG/issues/2757.html">2757</a></td>
+ <td>[<a href="https://wg21.link/class.cdtor">class.cdtor</a>]</td>
<td>review</td>
<td>Deleting or deallocating storage of an object during its construction</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2758">
<td><a href="https://cplusplus.github.io/CWG/issues/2758.html">2758</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>CD7</td>
<td>What is "access and ambiguity control"?</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2759">
<td><a href="https://cplusplus.github.io/CWG/issues/2759.html">2759</a></td>
+ <td>[<a href="https://wg21.link/class.mem.general">class.mem.general</a>]</td>
<td>CD7</td>
<td>[[no_unique_address] and common initial sequence</td>
<td class="full" align="center">Clang 19</td>
</tr>
<tr id="2760">
<td><a href="https://cplusplus.github.io/CWG/issues/2760.html">2760</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD7</td>
<td>Defaulted constructor that is an immediate function</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2761">
<td><a href="https://cplusplus.github.io/CWG/issues/2761.html">2761</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>CD7</td>
<td>Implicitly invoking the deleted destructor of an anonymous union member</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2762">
<td><a href="https://cplusplus.github.io/CWG/issues/2762.html">2762</a></td>
+ <td>[<a href="https://wg21.link/over.match.funcs.general">over.match.funcs.general</a>]</td>
<td>CD7</td>
<td>Type of implicit object parameter</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2763">
<td><a href="https://cplusplus.github.io/CWG/issues/2763.html">2763</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD7</td>
<td>Ignorability of [[noreturn]] during constant evaluation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2764">
<td><a href="https://cplusplus.github.io/CWG/issues/2764.html">2764</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.scope">basic.scope.scope</a>]</td>
<td>CD7</td>
<td>Use of placeholders affecting name mangling</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2765">
<td><a href="https://cplusplus.github.io/CWG/issues/2765.html">2765</a></td>
+ <td>[<a href="https://wg21.link/intro.object">intro.object</a>]</td>
<td>open</td>
<td>Address comparisons between potentially non-unique objects during constant evaluation</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2766">
<td><a href="https://cplusplus.github.io/CWG/issues/2766.html">2766</a></td>
+ <td>[<a href="https://wg21.link/lex.string">lex.string</a>]</td>
<td>open</td>
- <td>Repeated evaluation of a <I>string-literal</I> may yield different
-objects</td>
+ <td>Repeated evaluation of a <I>string-literal</I> may yield different objects</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2767">
<td><a href="https://cplusplus.github.io/CWG/issues/2767.html">2767</a></td>
+ <td>[<a href="https://wg21.link/class.union.anon">class.union.anon</a>]</td>
<td>open</td>
<td>Non-defining declarations of anonymous unions</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2768">
<td><a href="https://cplusplus.github.io/CWG/issues/2768.html">2768</a></td>
+ <td>[<a href="https://wg21.link/expr.assign">expr.assign</a>]</td>
<td>CD7</td>
<td>Assignment to enumeration variable with a <I>braced-init-list</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2769">
<td><a href="https://cplusplus.github.io/CWG/issues/2769.html">2769</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.general">temp.deduct.general</a>]</td>
<td>open</td>
<td>Substitution into template parameters and default template arguments should be interleaved</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2770">
<td><a href="https://cplusplus.github.io/CWG/issues/2770.html">2770</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.general">temp.deduct.general</a>]</td>
<td>open</td>
<td>Trailing <I>requires-clause</I> can refer to function parameters before they are substituted into</td>
<td align="center">
@@ -16476,462 +19203,539 @@ objects</td>
</tr>
<tr id="2771">
<td><a href="https://cplusplus.github.io/CWG/issues/2771.html">2771</a></td>
+ <td>[<a href="https://wg21.link/class.mfct.non.static">class.mfct.non.static</a>]</td>
<td>CD7</td>
<td>Transformation for <I>unqualified-id</I>s in address operator</td>
<td class="full" align="center">Clang 18</td>
</tr>
<tr id="2772">
<td><a href="https://cplusplus.github.io/CWG/issues/2772.html">2772</a></td>
+ <td>[<a href="https://wg21.link/diff.cpp03.dcl.dcl">diff.cpp03.dcl.dcl</a>]</td>
<td>CD7</td>
<td>Missing Annex C entry for linkage effects of <I>linkage-specification</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2773">
<td><a href="https://cplusplus.github.io/CWG/issues/2773.html">2773</a></td>
+ <td>[<a href="https://wg21.link/class.union.anon">class.union.anon</a>]</td>
<td>open</td>
<td>Naming anonymous union members as class members</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2774">
<td><a href="https://cplusplus.github.io/CWG/issues/2774.html">2774</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.constexpr">temp.dep.constexpr</a>]</td>
<td>open</td>
<td>Value-dependence of <I>requires-expression</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2775">
<td><a href="https://cplusplus.github.io/CWG/issues/2775.html">2775</a></td>
+ <td>[<a href="https://wg21.link/except.throw">except.throw</a>]</td>
<td>CD7</td>
<td>Unclear argument type for copy of exception object</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2776">
<td><a href="https://cplusplus.github.io/CWG/issues/2776.html">2776</a></td>
+ <td>[<a href="https://wg21.link/intro.compliance.general">intro.compliance.general</a>]</td>
<td>open</td>
<td>Substitution failure and implementation limits</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2777">
<td><a href="https://cplusplus.github.io/CWG/issues/2777.html">2777</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>CD7</td>
<td>Type of <I>id-expression</I> denoting a template parameter object</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2778">
<td><a href="https://cplusplus.github.io/CWG/issues/2778.html">2778</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>review</td>
<td>Trivial destructor does not imply constant destruction</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2779">
<td><a href="https://cplusplus.github.io/CWG/issues/2779.html">2779</a></td>
+ <td>[<a href="https://wg21.link/lex.charset">lex.charset</a>]</td>
<td>open</td>
<td>Restrictions on the ordinary literal encoding</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2780">
<td><a href="https://cplusplus.github.io/CWG/issues/2780.html">2780</a></td>
+ <td>[<a href="https://wg21.link/expr.reinterpret.cast">expr.reinterpret.cast</a>]</td>
<td>CD7</td>
<td><TT>reinterpret_cast</TT> to reference to function types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2781">
<td><a href="https://cplusplus.github.io/CWG/issues/2781.html">2781</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>open</td>
<td>Unclear recursion in the one-definition rule</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2782">
<td><a href="https://cplusplus.github.io/CWG/issues/2782.html">2782</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>open</td>
<td>Treatment of closure types in the one-definition rule</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2783">
<td><a href="https://cplusplus.github.io/CWG/issues/2783.html">2783</a></td>
+ <td>[<a href="https://wg21.link/module.global.frag">module.global.frag</a>]</td>
<td>CD7</td>
<td>Handling of deduction guides in <I>global-module-fragment</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2784">
<td><a href="https://cplusplus.github.io/CWG/issues/2784.html">2784</a></td>
+ <td>[<a href="https://wg21.link/support.types.layout">support.types.layout</a>]</td>
<td>open</td>
<td>Unclear definition of <I>member-designator</I> for <TT>offsetof</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr id="2785">
<td><a href="https://cplusplus.github.io/CWG/issues/2785.html">2785</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.expr">temp.dep.expr</a>]</td>
<td>CD7</td>
<td>Type-dependence of <I>requires-expression</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2786">
<td><a href="https://cplusplus.github.io/CWG/issues/2786.html">2786</a></td>
+ <td>[<a href="https://wg21.link/expr.eq">expr.eq</a>]</td>
<td>open</td>
<td>Comparing pointers to complete objects</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2787">
<td><a href="https://cplusplus.github.io/CWG/issues/2787.html">2787</a></td>
+ <td>[<a href="https://wg21.link/special">special</a>]</td>
<td>open</td>
<td>Kind of explicit object copy/move assignment function</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2788">
<td><a href="https://cplusplus.github.io/CWG/issues/2788.html">2788</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.scope">basic.scope.scope</a>]</td>
<td>open</td>
<td>Correspondence and redeclarations</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2789">
<td><a href="https://cplusplus.github.io/CWG/issues/2789.html">2789</a></td>
+ <td>[<a href="https://wg21.link/over.match.best.general">over.match.best.general</a>]</td>
<td>CD7</td>
<td>Overload resolution with implicit and explicit object member functions</td>
<td class="full" align="center">Clang 18</td>
</tr>
<tr class="open" id="2790">
<td><a href="https://cplusplus.github.io/CWG/issues/2790.html">2790</a></td>
+ <td>[<a href="https://wg21.link/over.ics.list">over.ics.list</a>]</td>
<td>open</td>
<td>Aggregate initialization and user-defined conversion sequence</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2791">
<td><a href="https://cplusplus.github.io/CWG/issues/2791.html">2791</a></td>
+ <td>[<a href="https://wg21.link/stmt.return">stmt.return</a>]</td>
<td>CD7</td>
<td>Unclear phrasing about "returning to the caller"</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2792">
<td><a href="https://cplusplus.github.io/CWG/issues/2792.html">2792</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.noexcept">expr.unary.noexcept</a>]</td>
<td>CD7</td>
<td>Clean up specification of <TT>noexcept</TT> operator</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2793">
<td><a href="https://cplusplus.github.io/CWG/issues/2793.html">2793</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.block">basic.scope.block</a>]</td>
<td>CD7</td>
<td>Block-scope declaration conflicting with parameter name</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2794">
<td><a href="https://cplusplus.github.io/CWG/issues/2794.html">2794</a></td>
+ <td>[<a href="https://wg21.link/temp.alias">temp.alias</a>]</td>
<td>open</td>
<td>Uniqueness of lambdas in alias templates</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2795">
<td><a href="https://cplusplus.github.io/CWG/issues/2795.html">2795</a></td>
+ <td>[<a href="https://wg21.link/intro.object">intro.object</a>]</td>
<td>CD7</td>
<td>Overlapping empty subobjects with different cv-qualification</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2796">
<td><a href="https://cplusplus.github.io/CWG/issues/2796.html">2796</a></td>
+ <td>[<a href="https://wg21.link/expr.rel">expr.rel</a>]</td>
<td>CD7</td>
<td>Function pointer conversions for relational operators</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2797">
<td><a href="https://cplusplus.github.io/CWG/issues/2797.html">2797</a></td>
+ <td>[<a href="https://wg21.link/over.match.oper">over.match.oper</a>]</td>
<td>review</td>
<td>Meaning of "corresponds" for rewritten operator candidates</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2798">
<td><a href="https://cplusplus.github.io/CWG/issues/2798.html">2798</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD7</td>
<td>Manifestly constant evaluation of the <TT>static_assert</TT> message</td>
<td class="full" align="center">Clang 17</td>
</tr>
<tr class="open" id="2799">
<td><a href="https://cplusplus.github.io/CWG/issues/2799.html">2799</a></td>
+ <td>[<a href="https://wg21.link/class.default.ctor">class.default.ctor</a>]</td>
<td>drafting</td>
<td>Inheriting default constructors</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2800">
<td><a href="https://cplusplus.github.io/CWG/issues/2800.html">2800</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>review</td>
<td>Instantiating constexpr variables for potential constant evaluation</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2801">
<td><a href="https://cplusplus.github.io/CWG/issues/2801.html">2801</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD7</td>
<td>Reference binding with reference-related types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2802">
<td><a href="https://cplusplus.github.io/CWG/issues/2802.html">2802</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>open</td>
<td>Constrained <TT>auto</TT> and redeclaration with non-abbreviated syntax</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2803">
<td><a href="https://cplusplus.github.io/CWG/issues/2803.html">2803</a></td>
+ <td>[<a href="https://wg21.link/over.ics.ref">over.ics.ref</a>]</td>
<td>CD7</td>
<td>Overload resolution for reference binding of similar types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2804">
<td><a href="https://cplusplus.github.io/CWG/issues/2804.html">2804</a></td>
+ <td>[<a href="https://wg21.link/over.match.oper">over.match.oper</a>]</td>
<td>open</td>
<td>Lookup for determining rewrite targets</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2805">
<td><a href="https://cplusplus.github.io/CWG/issues/2805.html">2805</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>open</td>
<td>Underspecified selection of deallocation function</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2806">
<td><a href="https://cplusplus.github.io/CWG/issues/2806.html">2806</a></td>
+ <td>[<a href="https://wg21.link/temp.res.general">temp.res.general</a>]</td>
<td>CD7</td>
<td>Make a <I>type-requirement</I> a type-only context</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2807">
<td><a href="https://cplusplus.github.io/CWG/issues/2807.html">2807</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>CD7</td>
<td>Destructors declared <TT>consteval</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2808">
<td><a href="https://cplusplus.github.io/CWG/issues/2808.html">2808</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>review</td>
<td>Explicit specialization of defaulted special member function</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2809">
<td><a href="https://cplusplus.github.io/CWG/issues/2809.html">2809</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>CD7</td>
<td>An implicit definition does not redeclare a function</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2810">
<td><a href="https://cplusplus.github.io/CWG/issues/2810.html">2810</a></td>
+ <td>[<a href="https://wg21.link/temp.res.general">temp.res.general</a>]</td>
<td>CD7</td>
<td>Requiring the absence of diagnostics for templates</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2811">
<td><a href="https://cplusplus.github.io/CWG/issues/2811.html">2811</a></td>
+ <td>[<a href="https://wg21.link/basic.start.main">basic.start.main</a>]</td>
<td>CD7</td>
<td>Clarify "use" of main</td>
<td class="full" align="center">Clang 3.5</td>
</tr>
<tr class="open" id="2812">
<td><a href="https://cplusplus.github.io/CWG/issues/2812.html">2812</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>open</td>
<td>Allocation with explicit alignment</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2813">
<td><a href="https://cplusplus.github.io/CWG/issues/2813.html">2813</a></td>
+ <td>[<a href="https://wg21.link/expr.ref">expr.ref</a>]</td>
<td>CD7</td>
<td>Class member access with prvalues</td>
<td class="full" align="center">Clang 20</td>
</tr>
<tr id="2814">
<td><a href="https://cplusplus.github.io/CWG/issues/2814.html">2814</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>NAD</td>
<td>Alignment requirement of incomplete class type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2815">
<td><a href="https://cplusplus.github.io/CWG/issues/2815.html">2815</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>CD7</td>
<td>Overload resolution for references/pointers to <TT>noexcept</TT> functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2816">
<td><a href="https://cplusplus.github.io/CWG/issues/2816.html">2816</a></td>
+ <td>[<a href="https://wg21.link/intro.progress">intro.progress</a>]</td>
<td>review</td>
<td>Unclear phrasing "may assume ... eventually"</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2817">
<td><a href="https://cplusplus.github.io/CWG/issues/2817.html">2817</a></td>
+ <td>[<a href="https://wg21.link/expr.sizeof">expr.sizeof</a>]</td>
<td>open</td>
<td>sizeof(abstract class) is underspecified</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2818">
<td><a href="https://cplusplus.github.io/CWG/issues/2818.html">2818</a></td>
+ <td>[<a href="https://wg21.link/lex.name">lex.name</a>]</td>
<td>CD7</td>
<td>Use of predefined reserved identifiers</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2819">
<td><a href="https://cplusplus.github.io/CWG/issues/2819.html">2819</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD7</td>
<td>Cast from null pointer value in a constant expression</td>
<td class="full" align="center">Clang 19 (C++26 onwards)</td>
</tr>
<tr id="2820">
<td><a href="https://cplusplus.github.io/CWG/issues/2820.html">2820</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.general">dcl.init.general</a>]</td>
<td>CD7</td>
<td>Value-initialization and default constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2821">
<td><a href="https://cplusplus.github.io/CWG/issues/2821.html">2821</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>review</td>
<td>Lifetime, zero-initialization, and dynamic initialization</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2822">
<td><a href="https://cplusplus.github.io/CWG/issues/2822.html">2822</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.general">basic.stc.general</a>]</td>
<td>CD7</td>
<td>Side-effect-free pointer zap</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2823">
<td><a href="https://cplusplus.github.io/CWG/issues/2823.html">2823</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.op">expr.unary.op</a>]</td>
<td>CD7</td>
<td>Implicit undefined behavior when dereferencing pointers</td>
<td class="none" align="center">No</td>
</tr>
<tr id="2824">
<td><a href="https://cplusplus.github.io/CWG/issues/2824.html">2824</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.general">dcl.init.general</a>]</td>
<td>CD7</td>
<td>Copy-initialization of arrays</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2825">
<td><a href="https://cplusplus.github.io/CWG/issues/2825.html">2825</a></td>
+ <td>[<a href="https://wg21.link/stmt.ranged">stmt.ranged</a>]</td>
<td>CD7</td>
<td>Range-based for statement using a <I>braced-init-list</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2826">
<td><a href="https://cplusplus.github.io/CWG/issues/2826.html">2826</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>drafting</td>
<td>Missing definition of "temporary expression"</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2827">
<td><a href="https://cplusplus.github.io/CWG/issues/2827.html">2827</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>review</td>
<td>Representation of unsigned integral types</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2828">
<td><a href="https://cplusplus.github.io/CWG/issues/2828.html">2828</a></td>
+ <td>[<a href="https://wg21.link/expr.cast">expr.cast</a>]</td>
<td>CD7</td>
<td>Ambiguous interpretation of C-style cast</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2829">
<td><a href="https://cplusplus.github.io/CWG/issues/2829.html">2829</a></td>
+ <td>[<a href="https://wg21.link/over.best.ics.general">over.best.ics.general</a>]</td>
<td>open</td>
<td>Redundant case in restricting user-defined conversion sequences</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2830">
<td><a href="https://cplusplus.github.io/CWG/issues/2830.html">2830</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD7</td>
<td>Top-level cv-qualification should be ignored for list-initialization</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2831">
<td><a href="https://cplusplus.github.io/CWG/issues/2831.html">2831</a></td>
+ <td>[<a href="https://wg21.link/dcl.decl.general">dcl.decl.general</a>]</td>
<td>CD7</td>
<td>Non-templated function definitions and <I>requires-clause</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2832">
<td><a href="https://cplusplus.github.io/CWG/issues/2832.html">2832</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>open</td>
<td>Invented temporary variables and temporary objects</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2833">
<td><a href="https://cplusplus.github.io/CWG/issues/2833.html">2833</a></td>
+ <td>[<a href="https://wg21.link/basic.start.dynamic">basic.start.dynamic</a>]</td>
<td>review</td>
<td>Evaluation of odr-use</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2834">
<td><a href="https://cplusplus.github.io/CWG/issues/2834.html">2834</a></td>
+ <td>[<a href="https://wg21.link/temp.func.order">temp.func.order</a>]</td>
<td>review</td>
<td>Partial ordering and explicit object parameters</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2835">
<td><a href="https://cplusplus.github.io/CWG/issues/2835.html">2835</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.scope">basic.scope.scope</a>]</td>
<td>open</td>
<td>Name-independent declarations</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2836">
<td><a href="https://cplusplus.github.io/CWG/issues/2836.html">2836</a></td>
+ <td>[<a href="https://wg21.link/conv.rank">conv.rank</a>]</td>
<td>CD7</td>
<td>Conversion rank of <TT>long double</TT> and extended floating-point types</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2837">
<td><a href="https://cplusplus.github.io/CWG/issues/2837.html">2837</a></td>
+ <td>[<a href="https://wg21.link/class.copy.ctor">class.copy.ctor</a>]</td>
<td>open</td>
<td>Instantiating and inheriting by-value copy constructors</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2838">
<td><a href="https://cplusplus.github.io/CWG/issues/2838.html">2838</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.block">basic.scope.block</a>]</td>
<td>open</td>
<td>Declaration conflicts in <I>lambda-expression</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2839">
<td><a href="https://cplusplus.github.io/CWG/issues/2839.html">2839</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>open</td>
<td>Explicit destruction of base classes</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2840">
<td><a href="https://cplusplus.github.io/CWG/issues/2840.html">2840</a></td>
+ <td>[<a href="https://wg21.link/basic.align">basic.align</a>]</td>
<td>open</td>
<td>Missing requirements for fundamental alignments</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2841">
<td><a href="https://cplusplus.github.io/CWG/issues/2841.html">2841</a></td>
+ <td>[<a href="https://wg21.link/class.ctor.general">class.ctor.general</a>]</td>
<td>open</td>
<td>When do const objects start being const?</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2842">
<td><a href="https://cplusplus.github.io/CWG/issues/2842.html">2842</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>open</td>
<td>Preferring an <TT>initializer_list</TT> over a single value</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2843">
<td><a href="https://cplusplus.github.io/CWG/issues/2843.html">2843</a></td>
+ <td>[<a href="https://wg21.link/intro.refs">intro.refs</a>]</td>
<td>CD7</td>
<td>Undated reference to Unicode makes C++ a moving target</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2844">
<td><a href="https://cplusplus.github.io/CWG/issues/2844.html">2844</a></td>
+ <td>[<a href="https://wg21.link/over.match.oper">over.match.oper</a>]</td>
<td>open</td>
<td>Enumerating a finite set of built-in candidates</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2845">
<td><a href="https://cplusplus.github.io/CWG/issues/2845.html">2845</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD7</td>
<td>Make the closure type of a captureless lambda a structural type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2846">
<td><a href="https://cplusplus.github.io/CWG/issues/2846.html">2846</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>CD7</td>
<td>Out-of-class definitions of explicit object member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2847">
<td><a href="https://cplusplus.github.io/CWG/issues/2847.html">2847</a></td>
+ <td>[<a href="https://wg21.link/temp.expl.spec">temp.expl.spec</a>]</td>
<td>review</td>
<td>Constrained explicit specializations of function templates at class scope</td>
<td align="center">
@@ -16942,228 +19746,266 @@ objects</td>
</tr>
<tr id="2848">
<td><a href="https://cplusplus.github.io/CWG/issues/2848.html">2848</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>CD7</td>
<td>Omitting an empty template argument list for explicit instantiation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2849">
<td><a href="https://cplusplus.github.io/CWG/issues/2849.html">2849</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>CD7</td>
<td>Parameter objects are not temporary objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2850">
<td><a href="https://cplusplus.github.io/CWG/issues/2850.html">2850</a></td>
+ <td>[<a href="https://wg21.link/basic.stc">basic.stc</a>]</td>
<td>CD7</td>
<td>Unclear storage duration for function parameter objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2851">
<td><a href="https://cplusplus.github.io/CWG/issues/2851.html">2851</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD7</td>
<td>Allow floating-point conversions in converted constant expressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2852">
<td><a href="https://cplusplus.github.io/CWG/issues/2852.html">2852</a></td>
+ <td>[<a href="https://wg21.link/class.mem.general">class.mem.general</a>]</td>
<td>open</td>
<td>Complete-class contexts and class-scope lambdas</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2853">
<td><a href="https://cplusplus.github.io/CWG/issues/2853.html">2853</a></td>
+ <td>[<a href="https://wg21.link/expr.add">expr.add</a>]</td>
<td>CD7</td>
<td>Pointer arithmetic with pointer to hypothetical element</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2854">
<td><a href="https://cplusplus.github.io/CWG/issues/2854.html">2854</a></td>
+ <td>[<a href="https://wg21.link/except.throw">except.throw</a>]</td>
<td>CD7</td>
<td>Storage duration of exception objects</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2855">
<td><a href="https://cplusplus.github.io/CWG/issues/2855.html">2855</a></td>
+ <td>[<a href="https://wg21.link/expr.post.incr">expr.post.incr</a>]</td>
<td>CD7</td>
<td>Undefined behavior in postfix increment</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2856">
<td><a href="https://cplusplus.github.io/CWG/issues/2856.html">2856</a></td>
+ <td>[<a href="https://wg21.link/over.match.list">over.match.list</a>]</td>
<td>CD7</td>
<td>Copy-list-initialization with explicit default constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2857">
<td><a href="https://cplusplus.github.io/CWG/issues/2857.html">2857</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>CD7</td>
<td>Argument-dependent lookup with incomplete class types</td>
<td class="none" align="center">No</td>
</tr>
<tr id="2858">
<td><a href="https://cplusplus.github.io/CWG/issues/2858.html">2858</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.id.qual">expr.prim.id.qual</a>]</td>
<td>CD7</td>
<td>Declarative <I>nested-name-specifier</I>s and <I>pack-index-specifier</I>s</td>
<td class="full" align="center">Clang 19</td>
</tr>
<tr id="2859">
<td><a href="https://cplusplus.github.io/CWG/issues/2859.html">2859</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.general">dcl.init.general</a>]</td>
<td>CD7</td>
<td>Value-initialization with multiple default constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2860">
<td><a href="https://cplusplus.github.io/CWG/issues/2860.html">2860</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>dup</td>
<td>Remove and fix the term "vacuous initialization"</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2861">
<td><a href="https://cplusplus.github.io/CWG/issues/2861.html">2861</a></td>
+ <td>[<a href="https://wg21.link/expr.dynamic.cast">expr.dynamic.cast</a>]</td>
<td>CD7</td>
<td><TT>dynamic_cast</TT> on bad pointer value</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2862">
<td><a href="https://cplusplus.github.io/CWG/issues/2862.html">2862</a></td>
+ <td>[<a href="https://wg21.link/temp.pre">temp.pre</a>]</td>
<td>review</td>
<td>Unclear boundaries of template declarations</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2863">
<td><a href="https://cplusplus.github.io/CWG/issues/2863.html">2863</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>drafting</td>
<td>Unclear synchronization requirements for object lifetime rules</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2864">
<td><a href="https://cplusplus.github.io/CWG/issues/2864.html">2864</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>CD7</td>
<td>Narrowing floating-point conversions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2865">
<td><a href="https://cplusplus.github.io/CWG/issues/2865.html">2865</a></td>
+ <td>[<a href="https://wg21.link/expr.cond">expr.cond</a>]</td>
<td>CD7</td>
<td>Regression on result of conditional operator</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2866">
<td><a href="https://cplusplus.github.io/CWG/issues/2866.html">2866</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr">dcl.attr</a>]</td>
<td>open</td>
<td>Observing the effects of <TT>[[no_unique_address]]</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr id="2867">
<td><a href="https://cplusplus.github.io/CWG/issues/2867.html">2867</a></td>
+ <td>[<a href="https://wg21.link/dcl.struct.bind">dcl.struct.bind</a>]</td>
<td>CD7</td>
<td>Order of initialization for structured bindings</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2868">
<td><a href="https://cplusplus.github.io/CWG/issues/2868.html">2868</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>open</td>
<td>Self-references in trivially copyable objects as function return values</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2869">
<td><a href="https://cplusplus.github.io/CWG/issues/2869.html">2869</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.this">expr.prim.this</a>]</td>
<td>CD7</td>
<td><TT>this</TT> in local classes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2870">
<td><a href="https://cplusplus.github.io/CWG/issues/2870.html">2870</a></td>
+ <td>[<a href="https://wg21.link/lex.string">lex.string</a>]</td>
<td>CD7</td>
<td>Combining absent <I>encoding-prefix</I>es</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2871">
<td><a href="https://cplusplus.github.io/CWG/issues/2871.html">2871</a></td>
+ <td>[<a href="https://wg21.link/class.default.ctor">class.default.ctor</a>]</td>
<td>CD7</td>
<td>User-declared constructor templates inhibiting default constructors</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2872">
<td><a href="https://cplusplus.github.io/CWG/issues/2872.html">2872</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>CD7</td>
<td>Linkage and unclear "can be referred to"</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2873">
<td><a href="https://cplusplus.github.io/CWG/issues/2873.html">2873</a></td>
+ <td>[<a href="https://wg21.link/over.over">over.over</a>]</td>
<td>open</td>
<td>Taking the address of a function involving template argument deduction</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2874">
<td><a href="https://cplusplus.github.io/CWG/issues/2874.html">2874</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.elab">dcl.type.elab</a>]</td>
<td>CD7</td>
<td>Qualified declarations of partial specializations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2875">
<td><a href="https://cplusplus.github.io/CWG/issues/2875.html">2875</a></td>
+ <td>[<a href="https://wg21.link/diff.expr">diff.expr</a>]</td>
<td>tentatively ready</td>
<td>Missing support for round-tripping null pointer values through indirection/address operators</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2876">
<td><a href="https://cplusplus.github.io/CWG/issues/2876.html">2876</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.general">dcl.fct.def.general</a>]</td>
<td>CD7</td>
<td>Disambiguation of <TT>T x = delete("text")</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2877">
<td><a href="https://cplusplus.github.io/CWG/issues/2877.html">2877</a></td>
+ <td>[<a href="https://wg21.link/enum.udecl">enum.udecl</a>]</td>
<td>CD7</td>
<td>Type-only lookup for <I>using-enum-declarator</I></td>
<td class="full" align="center">Clang 19</td>
</tr>
<tr class="open" id="2878">
<td><a href="https://cplusplus.github.io/CWG/issues/2878.html">2878</a></td>
+ <td>[<a href="https://wg21.link/expr.cast">expr.cast</a>]</td>
<td>open</td>
<td>C-style casts to reference types</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2879">
<td><a href="https://cplusplus.github.io/CWG/issues/2879.html">2879</a></td>
+ <td>[<a href="https://wg21.link/expr.const.cast">expr.const.cast</a>]</td>
<td>CD7</td>
<td>Undesired outcomes with <TT>const_cast</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2880">
<td><a href="https://cplusplus.github.io/CWG/issues/2880.html">2880</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>CD7</td>
<td>Accessibility check for destructor of incomplete class type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2881">
<td><a href="https://cplusplus.github.io/CWG/issues/2881.html">2881</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.lambda.closure">expr.prim.lambda.closure</a>]</td>
<td>CD7</td>
<td>Type restrictions for the explicit object parameter of a lambda</td>
<td class="full" align="center">Clang 19</td>
</tr>
<tr id="2882">
<td><a href="https://cplusplus.github.io/CWG/issues/2882.html">2882</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>CD7</td>
<td>Unclear treatment of conversion to <TT>void</TT></td>
<td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="2883">
<td><a href="https://cplusplus.github.io/CWG/issues/2883.html">2883</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD7</td>
<td>Definition of "odr-usable" ignores lambda scopes</td>
<td class="none" align="center">No</td>
</tr>
<tr id="2884">
<td><a href="https://cplusplus.github.io/CWG/issues/2884.html">2884</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.elab">dcl.type.elab</a>]</td>
<td>dup</td>
<td>Qualified declarations of partial specializations</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2885">
<td><a href="https://cplusplus.github.io/CWG/issues/2885.html">2885</a></td>
+ <td>[<a href="https://wg21.link/class.default.ctor">class.default.ctor</a>]</td>
<td>review</td>
<td>Non-eligible trivial default constructors</td>
<td align="center">
@@ -17174,192 +20016,224 @@ objects</td>
</tr>
<tr id="2886">
<td><a href="https://cplusplus.github.io/CWG/issues/2886.html">2886</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>CD7</td>
<td>Temporaries and trivial potentially-throwing special member functions</td>
<td class="full" align="center">Clang 9</td>
</tr>
<tr id="2887">
<td><a href="https://cplusplus.github.io/CWG/issues/2887.html">2887</a></td>
+ <td>[<a href="https://wg21.link/diff.cpp03.expr">diff.cpp03.expr</a>]</td>
<td>CD7</td>
<td>Missing compatibility entries for xvalues</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2888">
<td><a href="https://cplusplus.github.io/CWG/issues/2888.html">2888</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.argdep">basic.lookup.argdep</a>]</td>
<td>review</td>
<td>Missing cases for reference and array types for argument-dependent lookup</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2889">
<td><a href="https://cplusplus.github.io/CWG/issues/2889.html">2889</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>open</td>
<td>Requiring an accessible destructor for destroying operator delete</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2890">
<td><a href="https://cplusplus.github.io/CWG/issues/2890.html">2890</a></td>
+ <td>[<a href="https://wg21.link/class.local">class.local</a>]</td>
<td>CD7</td>
<td>Defining members of local classes</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2891">
<td><a href="https://cplusplus.github.io/CWG/issues/2891.html">2891</a></td>
+ <td>[<a href="https://wg21.link/implimits">implimits</a>]</td>
<td>CD7</td>
<td>Normative status of implementation limits</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2892">
<td><a href="https://cplusplus.github.io/CWG/issues/2892.html">2892</a></td>
+ <td>[<a href="https://wg21.link/expr.arith.conv">expr.arith.conv</a>]</td>
<td>CD7</td>
<td>Unclear usual arithmetic conversions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2893">
<td><a href="https://cplusplus.github.io/CWG/issues/2893.html">2893</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>NAD</td>
<td>Instantiations in discarded <TT>if constexpr</TT> substatements</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2894">
<td><a href="https://cplusplus.github.io/CWG/issues/2894.html">2894</a></td>
+ <td>[<a href="https://wg21.link/expr.type.conv">expr.type.conv</a>]</td>
<td>CD7</td>
<td>Functional casts create prvalues of reference type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2895">
<td><a href="https://cplusplus.github.io/CWG/issues/2895.html">2895</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.general">dcl.init.general</a>]</td>
<td>CD7</td>
<td>Initialization should ignore the destination type's cv-qualification</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2896">
<td><a href="https://cplusplus.github.io/CWG/issues/2896.html">2896</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct">temp.deduct</a>]</td>
<td>review</td>
<td>Template argument deduction involving exception specifications</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2897">
<td><a href="https://cplusplus.github.io/CWG/issues/2897.html">2897</a></td>
+ <td>[<a href="https://wg21.link/class.copy.assign">class.copy.assign</a>]</td>
<td>open</td>
<td>Copying potentially-overlapping union subobjects</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2898">
<td><a href="https://cplusplus.github.io/CWG/issues/2898.html">2898</a></td>
+ <td>[<a href="https://wg21.link/over.best.ics.general">over.best.ics.general</a>]</td>
<td>CD7</td>
<td>Clarify implicit conversion sequence from <I>cv</I> <TT>T</TT> to <TT>T</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2899">
<td><a href="https://cplusplus.github.io/CWG/issues/2899.html">2899</a></td>
+ <td>[<a href="https://wg21.link/conv.lval">conv.lval</a>]</td>
<td>CD7</td>
<td>Bad value representations should cause undefined behavior</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2900">
<td><a href="https://cplusplus.github.io/CWG/issues/2900.html">2900</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>open</td>
<td>Deduction of non-type template arguments with placeholder types</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2901">
<td><a href="https://cplusplus.github.io/CWG/issues/2901.html">2901</a></td>
+ <td>[<a href="https://wg21.link/basic.lval">basic.lval</a>]</td>
<td>CD7</td>
<td>Unclear semantics for near-match aliased access</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2902">
<td><a href="https://cplusplus.github.io/CWG/issues/2902.html">2902</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.id.general">expr.prim.id.general</a>]</td>
<td>review</td>
<td>Implicit <TT>this</TT> transformation outside of permitted contexts</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2903">
<td><a href="https://cplusplus.github.io/CWG/issues/2903.html">2903</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>drafting</td>
<td>Can we omit the <TT>template</TT> disambiguator in <I>nested-name-specifier</I>s in type-only contexts?</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2904">
<td><a href="https://cplusplus.github.io/CWG/issues/2904.html">2904</a></td>
+ <td>[<a href="https://wg21.link/temp.pre">temp.pre</a>]</td>
<td>open</td>
<td>Introducing <I>template-name</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2905">
<td><a href="https://cplusplus.github.io/CWG/issues/2905.html">2905</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.constexpr">temp.dep.constexpr</a>]</td>
<td>CD7</td>
<td>Value-dependence of <I>noexcept-expression</I></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2906">
<td><a href="https://cplusplus.github.io/CWG/issues/2906.html">2906</a></td>
+ <td>[<a href="https://wg21.link/expr.cond">expr.cond</a>]</td>
<td>CD7</td>
<td>Lvalue-to-rvalue conversion of class types for conditional operator</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2907">
<td><a href="https://cplusplus.github.io/CWG/issues/2907.html">2907</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD7</td>
<td>Constant lvalue-to-rvalue conversion on uninitialized <TT>std::nullptr_t</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2908">
<td><a href="https://cplusplus.github.io/CWG/issues/2908.html">2908</a></td>
+ <td>[<a href="https://wg21.link/cpp.line">cpp.line</a>]</td>
<td>CD7</td>
<td>Counting physical source lines for <TT>__LINE__</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2909">
<td><a href="https://cplusplus.github.io/CWG/issues/2909.html">2909</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD7</td>
<td>Subtle difference between constant-initialized and constexpr</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2910">
<td><a href="https://cplusplus.github.io/CWG/issues/2910.html">2910</a></td>
+ <td>[<a href="https://wg21.link/basic.def.odr">basic.def.odr</a>]</td>
<td>CD7</td>
<td>Effect of <I>requirement-parameter-list</I>s on odr-usability</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2911">
<td><a href="https://cplusplus.github.io/CWG/issues/2911.html">2911</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.req.general">expr.prim.req.general</a>]</td>
<td>CD7</td>
<td>Unclear meaning of expressions "appearing within" subexpressions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2912">
<td><a href="https://cplusplus.github.io/CWG/issues/2912.html">2912</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>open</td>
<td>Too-large value for size in array new</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2913">
<td><a href="https://cplusplus.github.io/CWG/issues/2913.html">2913</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.guide">temp.deduct.guide</a>]</td>
<td>CD7</td>
<td>Grammar for <I>deduction-guide</I> has <I>requires-clause</I> in the wrong position</td>
<td class="full" align="center">Clang 20</td>
</tr>
<tr class="open" id="2914">
<td><a href="https://cplusplus.github.io/CWG/issues/2914.html">2914</a></td>
+ <td>[<a href="https://wg21.link/basic.start.static">basic.start.static</a>]</td>
<td>review</td>
<td>Unclear order of initialization of static and thread-local variables</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2915">
<td><a href="https://cplusplus.github.io/CWG/issues/2915.html">2915</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>CD7</td>
<td>Explicit object parameters of type <TT>void</TT></td>
<td class="full" align="center">Clang 20</td>
</tr>
<tr class="open" id="2916">
<td><a href="https://cplusplus.github.io/CWG/issues/2916.html">2916</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial">temp.spec.partial</a>]</td>
<td>review</td>
<td>Variable template partial specializations should not be declared <TT>static</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2917">
<td><a href="https://cplusplus.github.io/CWG/issues/2917.html">2917</a></td>
+ <td>[<a href="https://wg21.link/temp.pre">temp.pre</a>]</td>
<td>review</td>
<td>Disallow multiple <I>friend-type-specifier</I>s for a friend template</td>
<td align="center">
@@ -17370,528 +20244,616 @@ objects</td>
</tr>
<tr id="2918">
<td><a href="https://cplusplus.github.io/CWG/issues/2918.html">2918</a></td>
+ <td>[<a href="https://wg21.link/over.over">over.over</a>]</td>
<td>CD7</td>
<td>Consideration of constraints for address of overloaded function</td>
<td class="full" align="center">Clang 21</td>
</tr>
<tr id="2919">
<td><a href="https://cplusplus.github.io/CWG/issues/2919.html">2919</a></td>
+ <td>[<a href="https://wg21.link/over.match.ref">over.match.ref</a>]</td>
<td>CD7</td>
<td>Conversion function candidates for initialization of const lvalue reference</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2920">
<td><a href="https://cplusplus.github.io/CWG/issues/2920.html">2920</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>open</td>
<td>The <TT>template</TT> keyword for base classes</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2921">
<td><a href="https://cplusplus.github.io/CWG/issues/2921.html">2921</a></td>
+ <td>[<a href="https://wg21.link/module.interface">module.interface</a>]</td>
<td>CD7</td>
<td>Exporting redeclarations of entities not attached to a named module</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2922">
<td><a href="https://cplusplus.github.io/CWG/issues/2922.html">2922</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>CD7</td>
<td>constexpr placement-new is too permissive</td>
<td class="full" align="center">Clang 20</td>
</tr>
<tr class="open" id="2923">
<td><a href="https://cplusplus.github.io/CWG/issues/2923.html">2923</a></td>
+ <td>[<a href="https://wg21.link/intro.progress">intro.progress</a>]</td>
<td>tentatively ready</td>
<td>Note about infinite loops and execution steps</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2924">
<td><a href="https://cplusplus.github.io/CWG/issues/2924.html">2924</a></td>
+ <td>[<a href="https://wg21.link/defns.undefined">defns.undefined</a>]</td>
<td>CD7</td>
<td>Undefined behavior during constant evaluation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2925">
<td><a href="https://cplusplus.github.io/CWG/issues/2925.html">2925</a></td>
+ <td>[<a href="https://wg21.link/expr.delete">expr.delete</a>]</td>
<td>NAD</td>
<td>Deleting a pointer to an incomplete enumeration type</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2926">
<td><a href="https://cplusplus.github.io/CWG/issues/2926.html">2926</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.qual.general">basic.lookup.qual.general</a>]</td>
<td>drafting</td>
<td>Lookup context for dependent qualified names</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2927">
<td><a href="https://cplusplus.github.io/CWG/issues/2927.html">2927</a></td>
+ <td>[<a href="https://wg21.link/cpp.pre">cpp.pre</a>]</td>
<td>CD7</td>
<td>Unclear status of translation unit with <TT>module</TT> keyword</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2928">
<td><a href="https://cplusplus.github.io/CWG/issues/2928.html">2928</a></td>
+ <td>[<a href="https://wg21.link/basic.start.dynamic">basic.start.dynamic</a>]</td>
<td>open</td>
<td>No ordering for initializing thread-local variables</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2929">
<td><a href="https://cplusplus.github.io/CWG/issues/2929.html">2929</a></td>
+ <td>[<a href="https://wg21.link/basic.start.term">basic.start.term</a>]</td>
<td>review</td>
<td>Lifetime of trivially-destructible static or thread-local objects</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2930">
<td><a href="https://cplusplus.github.io/CWG/issues/2930.html">2930</a></td>
+ <td>[<a href="https://wg21.link/class.copy.elision">class.copy.elision</a>]</td>
<td>CD7</td>
<td>Unclear term "copy/move operation" in specification of copy elision</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2931">
<td><a href="https://cplusplus.github.io/CWG/issues/2931.html">2931</a></td>
+ <td>[<a href="https://wg21.link/over.oper.general">over.oper.general</a>]</td>
<td>CD7</td>
<td>Restrictions on operator functions that are explicit object member functions</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2932">
<td><a href="https://cplusplus.github.io/CWG/issues/2932.html">2932</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>review</td>
<td>Value range of empty enumeration</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2933">
<td><a href="https://cplusplus.github.io/CWG/issues/2933.html">2933</a></td>
+ <td>[<a href="https://wg21.link/expr.type">expr.type</a>]</td>
<td>CD7</td>
<td>Dangling references</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2934">
<td><a href="https://cplusplus.github.io/CWG/issues/2934.html">2934</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.coroutine">dcl.fct.def.coroutine</a>]</td>
<td>open</td>
<td>Unclear semantics of exception escaping from <TT>unhandled_exception</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2935">
<td><a href="https://cplusplus.github.io/CWG/issues/2935.html">2935</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.coroutine">dcl.fct.def.coroutine</a>]</td>
<td>open</td>
<td>Destroying the coroutine state when initial-await-resume-called is false</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2936">
<td><a href="https://cplusplus.github.io/CWG/issues/2936.html">2936</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.type">temp.dep.type</a>]</td>
<td>CD7</td>
<td>Local classes of templated functions should be part of the current instantiation</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2937">
<td><a href="https://cplusplus.github.io/CWG/issues/2937.html">2937</a></td>
+ <td>[<a href="https://wg21.link/lex.phases">lex.phases</a>]</td>
<td>CD7</td>
<td>Grammar for <I>preprocessing-file</I> has no normative effect</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2938">
<td><a href="https://cplusplus.github.io/CWG/issues/2938.html">2938</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>open</td>
<td>Inheriting linkage from a previous declaration</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2939">
<td><a href="https://cplusplus.github.io/CWG/issues/2939.html">2939</a></td>
+ <td>[<a href="https://wg21.link/expr.reinterpret.cast">expr.reinterpret.cast</a>]</td>
<td>CD7</td>
<td>Do not allow <TT>reinterpret_cast</TT> from prvalue to rvalue reference</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2940">
<td><a href="https://cplusplus.github.io/CWG/issues/2940.html">2940</a></td>
+ <td>[<a href="https://wg21.link/intro.object">intro.object</a>]</td>
<td>review</td>
<td>Definition of "object"</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2941">
<td><a href="https://cplusplus.github.io/CWG/issues/2941.html">2941</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>open</td>
<td>Lifetime extension for function-style cast to reference type</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2942">
<td><a href="https://cplusplus.github.io/CWG/issues/2942.html">2942</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct">dcl.fct</a>]</td>
<td>open</td>
<td>Packs in a function's parameter-type-list</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2943">
<td><a href="https://cplusplus.github.io/CWG/issues/2943.html">2943</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.nodiscard">dcl.attr.nodiscard</a>]</td>
<td>CD7</td>
<td>Discarding a void return value</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="2944">
<td><a href="https://cplusplus.github.io/CWG/issues/2944.html">2944</a></td>
+ <td>[<a href="https://wg21.link/expr.throw">expr.throw</a>]</td>
<td>CD7</td>
<td>Unsequenced <I>throw-expression</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2945">
<td><a href="https://cplusplus.github.io/CWG/issues/2945.html">2945</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>open</td>
<td>Redundant constraints on matching function template declarations</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2946">
<td><a href="https://cplusplus.github.io/CWG/issues/2946.html">2946</a></td>
+ <td>[<a href="https://wg21.link/temp.over.link">temp.over.link</a>]</td>
<td>open</td>
<td>Dependent call equivalence in non-ADL cases</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2947">
<td><a href="https://cplusplus.github.io/CWG/issues/2947.html">2947</a></td>
+ <td>[<a href="https://wg21.link/cpp.module">cpp.module</a>]</td>
<td>open</td>
<td>Limiting macro expansion in <I>pp-module</I></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2948">
<td><a href="https://cplusplus.github.io/CWG/issues/2948.html">2948</a></td>
+ <td>[<a href="https://wg21.link/temp.spec.partial.general">temp.spec.partial.general</a>]</td>
<td>open</td>
<td>Late ambiguity for partial template specialization</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2949">
<td><a href="https://cplusplus.github.io/CWG/issues/2949.html">2949</a></td>
+ <td>[<a href="https://wg21.link/temp.func.order">temp.func.order</a>]</td>
<td>open</td>
<td>Treatment of ellipsis during partial ordering</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2950">
<td><a href="https://cplusplus.github.io/CWG/issues/2950.html">2950</a></td>
+ <td>[<a href="https://wg21.link/class.bit">class.bit</a>]</td>
<td>open</td>
<td>Value preservation in enumeration vs. integer bit-fields</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2951">
<td><a href="https://cplusplus.github.io/CWG/issues/2951.html">2951</a></td>
+ <td>[<a href="https://wg21.link/temp.decls.general">temp.decls.general</a>]</td>
<td>open</td>
<td>Distinguishing a primary template</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2952">
<td><a href="https://cplusplus.github.io/CWG/issues/2952.html">2952</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>open</td>
<td>Vacuous initialization for subobjects</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2953">
<td><a href="https://cplusplus.github.io/CWG/issues/2953.html">2953</a></td>
+ <td>[<a href="https://wg21.link/basic.types.general">basic.types.general</a>]</td>
<td>open</td>
<td>Value representation for non-trivially-copyable types</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2954">
<td><a href="https://cplusplus.github.io/CWG/issues/2954.html">2954</a></td>
+ <td>[<a href="https://wg21.link/intro.races">intro.races</a>]</td>
<td>NAD</td>
<td>Simultaneous modifications of an atomic object</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2955">
<td><a href="https://cplusplus.github.io/CWG/issues/2955.html">2955</a></td>
+ <td>[<a href="https://wg21.link/intro.execution">intro.execution</a>]</td>
<td>open</td>
<td>Unify rules about conflicting unordered accesses</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2956">
<td><a href="https://cplusplus.github.io/CWG/issues/2956.html">2956</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.qual.general">basic.lookup.qual.general</a>]</td>
<td>open</td>
<td>Missing allowance for pseudo-destructors in qualified lookup</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2957">
<td><a href="https://cplusplus.github.io/CWG/issues/2957.html">2957</a></td>
+ <td>[<a href="https://wg21.link/expr.ref">expr.ref</a>]</td>
<td>open</td>
<td>Evaluating a reference member should constitute access</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2958">
<td><a href="https://cplusplus.github.io/CWG/issues/2958.html">2958</a></td>
+ <td>[<a href="https://wg21.link/over.ics.rank">over.ics.rank</a>]</td>
<td>open</td>
<td>Overload resolution involving lvalue transformation and qualification conversion</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2959">
<td><a href="https://cplusplus.github.io/CWG/issues/2959.html">2959</a></td>
+ <td>[<a href="https://wg21.link/expr.ref">expr.ref</a>]</td>
<td>open</td>
<td>Naming enumerators in class member access expressions</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2960">
<td><a href="https://cplusplus.github.io/CWG/issues/2960.html">2960</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>open</td>
<td>Introduce discontiguous object lifetime</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2961">
<td><a href="https://cplusplus.github.io/CWG/issues/2961.html">2961</a></td>
+ <td>[<a href="https://wg21.link/temp.constr">temp.constr</a>]</td>
<td>open</td>
<td>Checking of ill-formed types in <I>constraint-expression</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2962">
<td><a href="https://cplusplus.github.io/CWG/issues/2962.html">2962</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>open</td>
<td>Evaluation of destructor call for variable with constant destruction</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2963">
<td><a href="https://cplusplus.github.io/CWG/issues/2963.html">2963</a></td>
+ <td>[<a href="https://wg21.link/stmt.ambig">stmt.ambig</a>]</td>
<td>open</td>
<td>Paradoxical variable-or-function declaration</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2964">
<td><a href="https://cplusplus.github.io/CWG/issues/2964.html">2964</a></td>
+ <td>[<a href="https://wg21.link/conv.lval">conv.lval</a>]</td>
<td>open</td>
<td>Reading "invalid pointer values"</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2965">
<td><a href="https://cplusplus.github.io/CWG/issues/2965.html">2965</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.temp">basic.scope.temp</a>]</td>
<td>open</td>
<td>Generic lambdas do not have a template parameter scope</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2966">
<td><a href="https://cplusplus.github.io/CWG/issues/2966.html">2966</a></td>
+ <td>[<a href="https://wg21.link/basic.fundamental">basic.fundamental</a>]</td>
<td>open</td>
<td>Alignment and value representation of <TT>std::nullptr_t</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2967">
<td><a href="https://cplusplus.github.io/CWG/issues/2967.html">2967</a></td>
+ <td>[<a href="https://wg21.link/over.match.ref">over.match.ref</a>]</td>
<td>open</td>
<td>Explicit conversion functions</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2968">
<td><a href="https://cplusplus.github.io/CWG/issues/2968.html">2968</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.general">basic.lookup.general</a>]</td>
<td>open</td>
<td>Name lookup result for <I>typedef-name</I> vs. <I>class-name</I></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2969">
<td><a href="https://cplusplus.github.io/CWG/issues/2969.html">2969</a></td>
+ <td>[<a href="https://wg21.link/basic.scope">basic.scope</a>]</td>
<td>open</td>
<td>Scopes in the <I>function-try-block</I> of a constructor</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2970">
<td><a href="https://cplusplus.github.io/CWG/issues/2970.html">2970</a></td>
+ <td>[<a href="https://wg21.link/intro.races">intro.races</a>]</td>
<td>CD7</td>
<td>Races with <TT>volatile sig_atomic_t</TT> bit-fields</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2971">
<td><a href="https://cplusplus.github.io/CWG/issues/2971.html">2971</a></td>
+ <td>[<a href="https://wg21.link/module.global.frag">module.global.frag</a>]</td>
<td>open</td>
<td>Specializations for a class are not decl-reachable</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2972">
<td><a href="https://cplusplus.github.io/CWG/issues/2972.html">2972</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.id.qual">expr.prim.id.qual</a>]</td>
<td>open</td>
<td>Declarative <I>nested-name-specifier</I> naming a partial specialization</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2973">
<td><a href="https://cplusplus.github.io/CWG/issues/2973.html">2973</a></td>
+ <td>[<a href="https://wg21.link/dcl.typedef">dcl.typedef</a>]</td>
<td>open</td>
<td>Does an <I>alias-declaration</I> introduce a name for linkage purposes?</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2974">
<td><a href="https://cplusplus.github.io/CWG/issues/2974.html">2974</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.type">temp.deduct.type</a>]</td>
<td>open</td>
<td>Non-deduced context for <I>qualified-id</I> naming a template</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2975">
<td><a href="https://cplusplus.github.io/CWG/issues/2975.html">2975</a></td>
+ <td>[<a href="https://wg21.link/temp.constr.normal">temp.constr.normal</a>]</td>
<td>open</td>
<td>Effect of concept <I>template-head</I> on parameter mappings</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2976">
<td><a href="https://cplusplus.github.io/CWG/issues/2976.html">2976</a></td>
+ <td>[<a href="https://wg21.link/stmt.dcl">stmt.dcl</a>]</td>
<td>review</td>
<td>Transferring control out of a function</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2977">
<td><a href="https://cplusplus.github.io/CWG/issues/2977.html">2977</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.general">dcl.init.general</a>]</td>
<td>review</td>
<td>Initialization with string literals</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2978">
<td><a href="https://cplusplus.github.io/CWG/issues/2978.html">2978</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.call">temp.deduct.call</a>]</td>
<td>open</td>
<td>Deduction involving reference to similar types</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2979">
<td><a href="https://cplusplus.github.io/CWG/issues/2979.html">2979</a></td>
+ <td>[<a href="https://wg21.link/class.mem.general">class.mem.general</a>]</td>
<td>open</td>
<td>Duplicate declarations of enumerations in class scope</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2980">
<td><a href="https://cplusplus.github.io/CWG/issues/2980.html">2980</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>open</td>
<td>Constraints on template template parameters</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2981">
<td><a href="https://cplusplus.github.io/CWG/issues/2981.html">2981</a></td>
+ <td>[<a href="https://wg21.link/expr.arith.conv">expr.arith.conv</a>]</td>
<td>open</td>
<td>Usual arithmetic conversions and result types</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2982">
<td><a href="https://cplusplus.github.io/CWG/issues/2982.html">2982</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.decl">temp.deduct.decl</a>]</td>
<td>CD7</td>
<td>Deduction in <I>type-constraint</I>s</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2983">
<td><a href="https://cplusplus.github.io/CWG/issues/2983.html">2983</a></td>
+ <td>[<a href="https://wg21.link/basic.pre">basic.pre</a>]</td>
<td>review</td>
<td>Non-type template parameters are not variables</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2984">
<td><a href="https://cplusplus.github.io/CWG/issues/2984.html">2984</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.constexpr">temp.dep.constexpr</a>]</td>
<td>open</td>
<td>Value-dependent structured bindings</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2985">
<td><a href="https://cplusplus.github.io/CWG/issues/2985.html">2985</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.ref">dcl.init.ref</a>]</td>
<td>CD7</td>
<td>Unclear rules for reference initialization with conversion</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2986">
<td><a href="https://cplusplus.github.io/CWG/issues/2986.html">2986</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>open</td>
<td>Creating objects within a mutable member of a const object</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2987">
<td><a href="https://cplusplus.github.io/CWG/issues/2987.html">2987</a></td>
+ <td>[<a href="https://wg21.link/expr.static.cast">expr.static.cast</a>]</td>
<td>CD7</td>
<td>Remove dilapidated wording from <TT>static_cast</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2988">
<td><a href="https://cplusplus.github.io/CWG/issues/2988.html">2988</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>open</td>
<td>Is a closure type from a <I>lambda-expression</I> appearing in a <I>concept-definition</I> a TU-local entity?</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2989">
<td><a href="https://cplusplus.github.io/CWG/issues/2989.html">2989</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.paren">expr.prim.paren</a>]</td>
<td>open</td>
<td>Remove misleading general allowance for parentheses</td>
<td align="center">Not resolved</td>
</tr>
<tr id="2990">
<td><a href="https://cplusplus.github.io/CWG/issues/2990.html">2990</a></td>
+ <td>[<a href="https://wg21.link/module.interface">module.interface</a>]</td>
<td>CD7</td>
<td>Exporting redeclarations of namespaces</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="2991">
<td><a href="https://cplusplus.github.io/CWG/issues/2991.html">2991</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.general">dcl.init.general</a>]</td>
<td>open</td>
<td>"array size" is vague</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2992">
<td><a href="https://cplusplus.github.io/CWG/issues/2992.html">2992</a></td>
+ <td>[<a href="https://wg21.link/basic.pre">basic.pre</a>]</td>
<td>open</td>
<td>Labels do not have names</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2993">
<td><a href="https://cplusplus.github.io/CWG/issues/2993.html">2993</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.general">dcl.fct.def.general</a>]</td>
<td>open</td>
<td>Body of a destructor</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2994">
<td><a href="https://cplusplus.github.io/CWG/issues/2994.html">2994</a></td>
+ <td>[<a href="https://wg21.link/temp.param">temp.param</a>]</td>
<td>open</td>
<td>Allowing template parameters following template parameter packs that are pack expansions</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2995">
<td><a href="https://cplusplus.github.io/CWG/issues/2995.html">2995</a></td>
+ <td>[<a href="https://wg21.link/stmt.return">stmt.return</a>]</td>
<td>open</td>
<td>Meaning of flowing off the end of a function</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2996">
<td><a href="https://cplusplus.github.io/CWG/issues/2996.html">2996</a></td>
+ <td>[<a href="https://wg21.link/temp.constr.atomic">temp.constr.atomic</a>]</td>
<td>open</td>
<td>Impenetrable definition of atomic constraint</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2997">
<td><a href="https://cplusplus.github.io/CWG/issues/2997.html">2997</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.default">dcl.fct.def.default</a>]</td>
<td>open</td>
<td>Defaulted functions with deleted definition</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2998">
<td><a href="https://cplusplus.github.io/CWG/issues/2998.html">2998</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.partial">temp.deduct.partial</a>]</td>
<td>open</td>
<td>Missing deduction consistency check for partial ordering</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="2999">
<td><a href="https://cplusplus.github.io/CWG/issues/2999.html">2999</a></td>
+ <td>[<a href="https://wg21.link/class.default.ctor">class.default.ctor</a>]</td>
<td>open</td>
<td>Trivial unions changing existing behavior</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3000">
<td><a href="https://cplusplus.github.io/CWG/issues/3000.html">3000</a></td>
+ <td>[<a href="https://wg21.link/expr.cond">expr.cond</a>]</td>
<td>review</td>
<td>Handling of cv-qualified class types in conditional operator</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3001">
<td><a href="https://cplusplus.github.io/CWG/issues/3001.html">3001</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>tentatively ready</td>
<td>Inconsistent restrictions for <TT>static_cast</TT> on pointers to out-of-lifetime objects</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3002">
<td><a href="https://cplusplus.github.io/CWG/issues/3002.html">3002</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.temp">temp.dep.temp</a>]</td>
<td>tentatively ready</td>
<td>Template parameter/argument confusion</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3003">
<td><a href="https://cplusplus.github.io/CWG/issues/3003.html">3003</a></td>
+ <td>[<a href="https://wg21.link/dcl.type.simple">dcl.type.simple</a>]</td>
<td>review</td>
<td>Naming a deducible template for class template argument deduction</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3004">
<td><a href="https://cplusplus.github.io/CWG/issues/3004.html">3004</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>tentatively ready</td>
<td>Pointer arithmetic on array of unknown bound</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3005">
<td><a href="https://cplusplus.github.io/CWG/issues/3005.html">3005</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.scope">basic.scope.scope</a>]</td>
<td>tentatively ready</td>
<td>Function parameters should never be name-independent</td>
<td align="center">
@@ -17902,570 +20864,665 @@ objects</td>
</tr>
<tr class="open" id="3006">
<td><a href="https://cplusplus.github.io/CWG/issues/3006.html">3006</a></td>
+ <td>[<a href="https://wg21.link/temp.explicit">temp.explicit</a>]</td>
<td>review</td>
<td>Vague restrictions for explicit instantiations of class templates</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3007">
<td><a href="https://cplusplus.github.io/CWG/issues/3007.html">3007</a></td>
+ <td>[<a href="https://wg21.link/class.compare.default">class.compare.default</a>]</td>
<td>open</td>
<td>Access checking during synthesis of defaulted comparison operator, take 2</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3008">
<td><a href="https://cplusplus.github.io/CWG/issues/3008.html">3008</a></td>
+ <td>[<a href="https://wg21.link/diff.dcl">diff.dcl</a>]</td>
<td>tentatively ready</td>
<td>Missing Annex C entry for <TT>void</TT> object declarations</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3009">
<td><a href="https://cplusplus.github.io/CWG/issues/3009.html">3009</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>open</td>
<td>Unclear rules for constant initialization</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3010">
<td><a href="https://cplusplus.github.io/CWG/issues/3010.html">3010</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>open</td>
<td>constexpr placement-new should require transparent replaceability</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3011">
<td><a href="https://cplusplus.github.io/CWG/issues/3011.html">3011</a></td>
+ <td>[<a href="https://wg21.link/expr.new">expr.new</a>]</td>
<td>tentatively ready</td>
<td>Parenthesized aggregate initialization for <I>new-expression</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3012">
<td><a href="https://cplusplus.github.io/CWG/issues/3012.html">3012</a></td>
+ <td>[<a href="https://wg21.link/dcl.constexpr">dcl.constexpr</a>]</td>
<td>open</td>
<td>Deviating <TT>constexpr</TT> or <TT>consteval</TT> across translation units</td>
<td align="center">Not resolved</td>
</tr>
<tr id="3013">
<td><a href="https://cplusplus.github.io/CWG/issues/3013.html">3013</a></td>
+ <td>[<a href="https://wg21.link/cpp.embed.gen">cpp.embed.gen</a>]</td>
<td>CD7</td>
<td>Disallowing macros for <TT>#embed</TT> parameters</td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="3014">
<td><a href="https://cplusplus.github.io/CWG/issues/3014.html">3014</a></td>
+ <td>[<a href="https://wg21.link/cpp.embed.gen">cpp.embed.gen</a>]</td>
<td>CD7</td>
<td>Comma-delimited vs. comma-separated output for <TT>#embed</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="3015">
<td><a href="https://cplusplus.github.io/CWG/issues/3015.html">3015</a></td>
+ <td>[<a href="https://wg21.link/cpp.include">cpp.include</a>]</td>
<td>CD7</td>
<td>Handling of <I>header-name</I>s for <TT>#include</TT> and <TT>#embed</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr id="3016">
<td><a href="https://cplusplus.github.io/CWG/issues/3016.html">3016</a></td>
+ <td>[<a href="https://wg21.link/cpp.cond">cpp.cond</a>]</td>
<td>CD7</td>
<td>Satisfying the syntactic requirements of <TT>#include</TT> and <TT>#embed</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="3017">
<td><a href="https://cplusplus.github.io/CWG/issues/3017.html">3017</a></td>
+ <td>[<a href="https://wg21.link/cpp.cond">cpp.cond</a>]</td>
<td>open</td>
<td>Commas in controlling expression of conditional inclusion</td>
<td align="center">Not resolved</td>
</tr>
<tr id="3018">
<td><a href="https://cplusplus.github.io/CWG/issues/3018.html">3018</a></td>
+ <td>[<a href="https://wg21.link/cpp.cond">cpp.cond</a>]</td>
<td>CD7</td>
<td>Validity of <TT>defined</TT> in <TT>__has_embed</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="3019">
<td><a href="https://cplusplus.github.io/CWG/issues/3019.html">3019</a></td>
+ <td>[<a href="https://wg21.link/lex.header">lex.header</a>]</td>
<td>open</td>
<td>Restrictions on character sequences in <I>header-name</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr id="3020">
<td><a href="https://cplusplus.github.io/CWG/issues/3020.html">3020</a></td>
+ <td>[<a href="https://wg21.link/cpp.cond">cpp.cond</a>]</td>
<td>CD7</td>
<td>Missing specification for <TT>__has_cpp_attribute(indeterminate)</TT></td>
<td class="unknown" align="center">Unknown</td>
</tr>
<tr class="open" id="3021">
<td><a href="https://cplusplus.github.io/CWG/issues/3021.html">3021</a></td>
+ <td>[<a href="https://wg21.link/temp.constr.order">temp.constr.order</a>]</td>
<td>drafting</td>
<td>Subsumption rules for fold expanded constraints</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3022">
<td><a href="https://cplusplus.github.io/CWG/issues/3022.html">3022</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>review</td>
<td>Redundant specification of explicit destructor calls</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3023">
<td><a href="https://cplusplus.github.io/CWG/issues/3023.html">3023</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.list">dcl.init.list</a>]</td>
<td>open</td>
<td>Default arguments in list-initialization</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3024">
<td><a href="https://cplusplus.github.io/CWG/issues/3024.html">3024</a></td>
+ <td>[<a href="https://wg21.link/dcl.align">dcl.align</a>]</td>
<td>open</td>
<td>Alignment of references</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3025">
<td><a href="https://cplusplus.github.io/CWG/issues/3025.html">3025</a></td>
+ <td>[<a href="https://wg21.link/basic.stc.dynamic.deallocation">basic.stc.dynamic.deallocation</a>]</td>
<td>open</td>
<td>Deallocation functions returning void</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3026">
<td><a href="https://cplusplus.github.io/CWG/issues/3026.html">3026</a></td>
+ <td>[<a href="https://wg21.link/expr.unary.op">expr.unary.op</a>]</td>
<td>open</td>
<td>Class for pointer-to-member formation</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3027">
<td><a href="https://cplusplus.github.io/CWG/issues/3027.html">3027</a></td>
+ <td>[<a href="https://wg21.link/temp.type">temp.type</a>]</td>
<td>open</td>
<td>Equivalence of <I>pack-index-specifier</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3028">
<td><a href="https://cplusplus.github.io/CWG/issues/3028.html">3028</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>open</td>
<td>A <I>using-declarator</I> should bind a name</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3029">
<td><a href="https://cplusplus.github.io/CWG/issues/3029.html">3029</a></td>
+ <td>[<a href="https://wg21.link/basic.align">basic.align</a>]</td>
<td>drafting</td>
<td>Confusing note about ordinary character types for aligned memory areas</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3030">
<td><a href="https://cplusplus.github.io/CWG/issues/3030.html">3030</a></td>
+ <td>[<a href="https://wg21.link/dcl.array">dcl.array</a>]</td>
<td>open</td>
<td>Initializing array prvalues of unknown bound</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3031">
<td><a href="https://cplusplus.github.io/CWG/issues/3031.html">3031</a></td>
+ <td>[<a href="https://wg21.link/over.match.funcs.general">over.match.funcs.general</a>]</td>
<td>open</td>
<td>Finding declarations for conversion operators for access checking</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3032">
<td><a href="https://cplusplus.github.io/CWG/issues/3032.html">3032</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.general">temp.arg.general</a>]</td>
<td>tentatively ready</td>
<td>Template argument disambiguation</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3033">
<td><a href="https://cplusplus.github.io/CWG/issues/3033.html">3033</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.namespace">basic.scope.namespace</a>]</td>
<td>open</td>
<td>Scope after <I>declarator-id</I> before determining correspondence</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3034">
<td><a href="https://cplusplus.github.io/CWG/issues/3034.html">3034</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>open</td>
<td>Infinite recursion should hit an implementation limit</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3035">
<td><a href="https://cplusplus.github.io/CWG/issues/3035.html">3035</a></td>
+ <td>[<a href="https://wg21.link/class.union.anon">class.union.anon</a>]</td>
<td>open</td>
<td>Lambda expressions in anonymous unions</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3036">
<td><a href="https://cplusplus.github.io/CWG/issues/3036.html">3036</a></td>
+ <td>[<a href="https://wg21.link/basic.extended.fp">basic.extended.fp</a>]</td>
<td>open</td>
<td>Extended floating-point types should not be cv-qualified</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3037">
<td><a href="https://cplusplus.github.io/CWG/issues/3037.html">3037</a></td>
+ <td>[<a href="https://wg21.link/namespace.udecl">namespace.udecl</a>]</td>
<td>open</td>
<td>Name lookup results for <I>using-declarator</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3038">
<td><a href="https://cplusplus.github.io/CWG/issues/3038.html">3038</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.grammar">dcl.attr.grammar</a>]</td>
<td>open</td>
<td>Ignorability of attributes, again</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3039">
<td><a href="https://cplusplus.github.io/CWG/issues/3039.html">3039</a></td>
+ <td>[<a href="https://wg21.link/intro.object">intro.object</a>]</td>
<td>open</td>
<td>Undefined behavior from implicit object creation ignores observable checkpoints</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3040">
<td><a href="https://cplusplus.github.io/CWG/issues/3040.html">3040</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.def.coroutine">dcl.fct.def.coroutine</a>]</td>
<td>open</td>
<td>Mishandling of lambda coroutines</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3041">
<td><a href="https://cplusplus.github.io/CWG/issues/3041.html">3041</a></td>
+ <td>[<a href="https://wg21.link/class.dtor">class.dtor</a>]</td>
<td>open</td>
<td>Overly aggressive rule for deleting the destructor of a union</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3042">
<td><a href="https://cplusplus.github.io/CWG/issues/3042.html">3042</a></td>
+ <td>[<a href="https://wg21.link/basic.lval">basic.lval</a>]</td>
<td>open</td>
<td>Implicit object creation is insufficient to model effective type rule of C</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3043">
<td><a href="https://cplusplus.github.io/CWG/issues/3043.html">3043</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>open</td>
<td>Lifetime extension for temporaries in expansion statements</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3044">
<td><a href="https://cplusplus.github.io/CWG/issues/3044.html">3044</a></td>
+ <td>[<a href="https://wg21.link/stmt.expand">stmt.expand</a>]</td>
<td>tentatively ready</td>
<td>Iterating expansion statements woes</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3045">
<td><a href="https://cplusplus.github.io/CWG/issues/3045.html">3045</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.block">basic.scope.block</a>]</td>
<td>tentatively ready</td>
<td>Regularizing environment interactions of expansion statement</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3046">
<td><a href="https://cplusplus.github.io/CWG/issues/3046.html">3046</a></td>
+ <td>[<a href="https://wg21.link/dcl.enum">dcl.enum</a>]</td>
<td>open</td>
<td>Enumerations as part of the common initial sequence</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3047">
<td><a href="https://cplusplus.github.io/CWG/issues/3047.html">3047</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>open</td>
<td>Calling destructors on out-of-lifetime objects</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3048">
<td><a href="https://cplusplus.github.io/CWG/issues/3048.html">3048</a></td>
+ <td>[<a href="https://wg21.link/stmt.expand">stmt.expand</a>]</td>
<td>tentatively ready</td>
<td>Empty destructuring expansion statements</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3049">
<td><a href="https://cplusplus.github.io/CWG/issues/3049.html">3049</a></td>
+ <td>[<a href="https://wg21.link/class.prop">class.prop</a>]</td>
<td>open</td>
<td>Implicitly deleted move operation should not disable trivial relocation</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3050">
<td><a href="https://cplusplus.github.io/CWG/issues/3050.html">3050</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.deprecated">dcl.attr.deprecated</a>]</td>
<td>open</td>
<td>[[deprecated]] for class template partial specializations</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3051">
<td><a href="https://cplusplus.github.io/CWG/issues/3051.html">3051</a></td>
+ <td>[<a href="https://wg21.link/class.mem.general">class.mem.general</a>]</td>
<td>open</td>
<td>Missing specification for types of member subobjects</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3052">
<td><a href="https://cplusplus.github.io/CWG/issues/3052.html">3052</a></td>
+ <td>[<a href="https://wg21.link/stmt.return">stmt.return</a>]</td>
<td>open</td>
<td>Unclear handling of checks on discarded <TT>return</TT> statements</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3053">
<td><a href="https://cplusplus.github.io/CWG/issues/3053.html">3053</a></td>
+ <td>[<a href="https://wg21.link/cpp.replace.general">cpp.replace.general</a>]</td>
<td>tentatively ready</td>
<td>Allowing <TT>#undef likely</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3054">
<td><a href="https://cplusplus.github.io/CWG/issues/3054.html">3054</a></td>
+ <td>[<a href="https://wg21.link/expr.call">expr.call</a>]</td>
<td>open</td>
<td>Use of default arguments depending on shape of <I>postfix-expression</I> in a function call</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3055">
<td><a href="https://cplusplus.github.io/CWG/issues/3055.html">3055</a></td>
+ <td>[<a href="https://wg21.link/over.call.object">over.call.object</a>]</td>
<td>open</td>
<td>Misleading body for surrogate call function</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3056">
<td><a href="https://cplusplus.github.io/CWG/issues/3056.html">3056</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.req.type">expr.prim.req.type</a>]</td>
<td>open</td>
<td>Missing semicolons in grammar for <I>type-requirement</I></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3057">
<td><a href="https://cplusplus.github.io/CWG/issues/3057.html">3057</a></td>
+ <td>[<a href="https://wg21.link/over.ics.ref">over.ics.ref</a>]</td>
<td>open</td>
<td>Ranking of derived-to-base conversions should ignore reference binding</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3058">
<td><a href="https://cplusplus.github.io/CWG/issues/3058.html">3058</a></td>
+ <td>[<a href="https://wg21.link/basic.lookup.general">basic.lookup.general</a>]</td>
<td>open</td>
<td>"Program point" is not defined</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3059">
<td><a href="https://cplusplus.github.io/CWG/issues/3059.html">3059</a></td>
+ <td>[<a href="https://wg21.link/expr.const">expr.const</a>]</td>
<td>open</td>
<td><TT>throw;</TT> in constant expressions</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3060">
<td><a href="https://cplusplus.github.io/CWG/issues/3060.html">3060</a></td>
+ <td>[<a href="https://wg21.link/basic.start.main">basic.start.main</a>]</td>
<td>open</td>
<td>Change in behavior for <TT>noexcept</TT> <TT>main</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3061">
<td><a href="https://cplusplus.github.io/CWG/issues/3061.html">3061</a></td>
+ <td>[<a href="https://wg21.link/stmt.expand">stmt.expand</a>]</td>
<td>tentatively ready</td>
<td>Trailing comma in an <I>expansion-init-list</I></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3062">
<td><a href="https://cplusplus.github.io/CWG/issues/3062.html">3062</a></td>
+ <td>[<a href="https://wg21.link/dcl.fct.default">dcl.fct.default</a>]</td>
<td>open</td>
<td>Overlapping specification of default template arguments</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3063">
<td><a href="https://cplusplus.github.io/CWG/issues/3063.html">3063</a></td>
+ <td>[<a href="https://wg21.link/class.temporary">class.temporary</a>]</td>
<td>open</td>
<td>Lifetime extension of temporaries past function return</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3064">
<td><a href="https://cplusplus.github.io/CWG/issues/3064.html">3064</a></td>
+ <td>[<a href="https://wg21.link/basic.life">basic.life</a>]</td>
<td>open</td>
<td>Mishandling of placement-new in lifetime rules</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3065">
<td><a href="https://cplusplus.github.io/CWG/issues/3065.html">3065</a></td>
+ <td>[<a href="https://wg21.link/basic.types.general">basic.types.general</a>]</td>
<td>open</td>
<td>Reachability and completeness of types</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3066">
<td><a href="https://cplusplus.github.io/CWG/issues/3066.html">3066</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.id.qual">expr.prim.id.qual</a>]</td>
<td>tentatively ready</td>
<td>Declarative <I>nested-name-specifier</I> in explicit instantiation</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3067">
<td><a href="https://cplusplus.github.io/CWG/issues/3067.html">3067</a></td>
+ <td>[<a href="https://wg21.link/conv.array">conv.array</a>]</td>
<td>open</td>
<td>Array-to-pointer conversion with object type mismatch</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3068">
<td><a href="https://cplusplus.github.io/CWG/issues/3068.html">3068</a></td>
+ <td>[<a href="https://wg21.link/class.access.general">class.access.general</a>]</td>
<td>open</td>
<td>Access checking in friends involving <I>qualified-id</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3069">
<td><a href="https://cplusplus.github.io/CWG/issues/3069.html">3069</a></td>
+ <td>[<a href="https://wg21.link/temp.constr.normal">temp.constr.normal</a>]</td>
<td>open</td>
<td>Reference to wrong placeholder</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3070">
<td><a href="https://cplusplus.github.io/CWG/issues/3070.html">3070</a></td>
+ <td>[<a href="https://wg21.link/class.copy.assign">class.copy.assign</a>]</td>
<td>open</td>
<td>Trivial assignment can skip member subobjects</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3071">
<td><a href="https://cplusplus.github.io/CWG/issues/3071.html">3071</a></td>
+ <td>[<a href="https://wg21.link/dcl.struct.bind">dcl.struct.bind</a>]</td>
<td>open</td>
<td>Negative <TT>tuple_size</TT> in structured bindings</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3072">
<td><a href="https://cplusplus.github.io/CWG/issues/3072.html">3072</a></td>
+ <td>[<a href="https://wg21.link/temp.deduct.general">temp.deduct.general</a>]</td>
<td>open</td>
<td>Incorrect examples for lambda SFINAE</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3073">
<td><a href="https://cplusplus.github.io/CWG/issues/3073.html">3073</a></td>
+ <td>[<a href="https://wg21.link/over.match.ref">over.match.ref</a>]</td>
<td>open</td>
<td>Dependence of <I>R</I> on <TT>T2</TT> is unclear</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3074">
<td><a href="https://cplusplus.github.io/CWG/issues/3074.html">3074</a></td>
+ <td>[<a href="https://wg21.link/cpp.module">cpp.module</a>]</td>
<td>tentatively ready</td>
<td>Redundant ill-formedness for module macros</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3075">
<td><a href="https://cplusplus.github.io/CWG/issues/3075.html">3075</a></td>
+ <td>[<a href="https://wg21.link/cpp.import">cpp.import</a>]</td>
<td>tentatively ready</td>
<td>Unclear matching of import directive</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3076">
<td><a href="https://cplusplus.github.io/CWG/issues/3076.html">3076</a></td>
+ <td>[<a href="https://wg21.link/cpp.include">cpp.include</a>]</td>
<td>tentatively ready</td>
<td>Remove unnecessary IFNDR for malformed <I>header-name-token</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3077">
<td><a href="https://cplusplus.github.io/CWG/issues/3077.html">3077</a></td>
+ <td>[<a href="https://wg21.link/cpp.pre">cpp.pre</a>]</td>
<td>tentatively ready</td>
<td>Undesirable formation of <TT>import</TT> directive with <I>string-literal</I></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3078">
<td><a href="https://cplusplus.github.io/CWG/issues/3078.html">3078</a></td>
+ <td>[<a href="https://wg21.link/cpp.include">cpp.include</a>]</td>
<td>review</td>
<td>Different treatment of <TT>#include</TT> <I>pp-tokens</I> and <I>header-name-tokens</I></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3079">
<td><a href="https://cplusplus.github.io/CWG/issues/3079.html">3079</a></td>
+ <td>[<a href="https://wg21.link/class.union.anon">class.union.anon</a>]</td>
<td>open</td>
<td>Allow <I>empty-declaration</I>s in anonymous unions</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3080">
<td><a href="https://cplusplus.github.io/CWG/issues/3080.html">3080</a></td>
+ <td>[<a href="https://wg21.link/temp.arg.template">temp.arg.template</a>]</td>
<td>tentatively ready</td>
<td>Clarify kinds of permitted template template arguments</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3081">
<td><a href="https://cplusplus.github.io/CWG/issues/3081.html">3081</a></td>
+ <td>[<a href="https://wg21.link/expr.ref">expr.ref</a>]</td>
<td>review</td>
<td>Require glvalue when splicing direct base class relationship</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3082">
<td><a href="https://cplusplus.github.io/CWG/issues/3082.html">3082</a></td>
+ <td>[<a href="https://wg21.link/expr.reinterpret.cast">expr.reinterpret.cast</a>]</td>
<td>tentatively ready</td>
<td>Allow for call-compatible function types in <TT>reinterpret_cast</TT></td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3083">
<td><a href="https://cplusplus.github.io/CWG/issues/3083.html">3083</a></td>
+ <td>[<a href="https://wg21.link/stmt.pre">stmt.pre</a>]</td>
<td>tentatively ready</td>
<td>Remove redundant restrictions on class and enum definitions</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3084">
<td><a href="https://cplusplus.github.io/CWG/issues/3084.html">3084</a></td>
+ <td>[<a href="https://wg21.link/stmt.cont">stmt.cont</a>]</td>
<td>tentatively ready</td>
<td><I>compound-statement</I>s inside <I>iteration-statement</I>s</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3085">
<td><a href="https://cplusplus.github.io/CWG/issues/3085.html">3085</a></td>
+ <td>[<a href="https://wg21.link/stmt.pre">stmt.pre</a>]</td>
<td>tentatively ready</td>
<td>Apply restriction inside for-range-declaration</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3086">
<td><a href="https://cplusplus.github.io/CWG/issues/3086.html">3086</a></td>
+ <td>[<a href="https://wg21.link/cpp.pragma.op">cpp.pragma.op</a>]</td>
<td>tentatively ready</td>
<td>Destringizing should consider all sorts of encoding-prefixes</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3087">
<td><a href="https://cplusplus.github.io/CWG/issues/3087.html">3087</a></td>
+ <td>[<a href="https://wg21.link/cpp.pragma.op">cpp.pragma.op</a>]</td>
<td>open</td>
<td>Destringizing for raw string literals</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3088">
<td><a href="https://cplusplus.github.io/CWG/issues/3088.html">3088</a></td>
+ <td>[<a href="https://wg21.link/cpp.replace.general">cpp.replace.general</a>]</td>
<td>open</td>
<td>Clarify macro treatment of identifiers with special meaning</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3089">
<td><a href="https://cplusplus.github.io/CWG/issues/3089.html">3089</a></td>
+ <td>[<a href="https://wg21.link/dcl.init.general">dcl.init.general</a>]</td>
<td>tentatively ready</td>
<td>const-default-constructible improperly handles std::meta::info</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3090">
<td><a href="https://cplusplus.github.io/CWG/issues/3090.html">3090</a></td>
+ <td>[<a href="https://wg21.link/module.interface">module.interface</a>]</td>
<td>tentatively ready</td>
<td>Internal linkage from header units</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3091">
<td><a href="https://cplusplus.github.io/CWG/issues/3091.html">3091</a></td>
+ <td>[<a href="https://wg21.link/basic.link">basic.link</a>]</td>
<td>review</td>
<td>Linking of translation units as sequences of tokens</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3092">
<td><a href="https://cplusplus.github.io/CWG/issues/3092.html">3092</a></td>
+ <td>[<a href="https://wg21.link/dcl.attr.annotation">dcl.attr.annotation</a>]</td>
<td>tentatively ready</td>
<td><I>base-specifier</I>s are not "declared"</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3093">
<td><a href="https://cplusplus.github.io/CWG/issues/3093.html">3093</a></td>
+ <td>[<a href="https://wg21.link/expr.prim.splice">expr.prim.splice</a>]</td>
<td>open</td>
<td>Missing integration of direct base class relationships</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3094">
<td><a href="https://cplusplus.github.io/CWG/issues/3094.html">3094</a></td>
+ <td>[<a href="https://wg21.link/lex.phases">lex.phases</a>]</td>
<td>review</td>
<td>Rework phases for string literal concatenation and token formation</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3095">
<td><a href="https://cplusplus.github.io/CWG/issues/3095.html">3095</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.expr">temp.dep.expr</a>]</td>
<td>open</td>
<td>Type-dependent packs that are not structured binding packs</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3096">
<td><a href="https://cplusplus.github.io/CWG/issues/3096.html">3096</a></td>
+ <td>[<a href="https://wg21.link/temp.dep.constexpr">temp.dep.constexpr</a>]</td>
<td>open</td>
<td>Value-dependence of size of structured binding pack with non-dependent initializer</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3097">
<td><a href="https://cplusplus.github.io/CWG/issues/3097.html">3097</a></td>
+ <td>[<a href="https://wg21.link/basic.scope.scope">basic.scope.scope</a>]</td>
<td>tentatively ready</td>
<td>Lambda expression introduces a scope</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3098">
<td><a href="https://cplusplus.github.io/CWG/issues/3098.html">3098</a></td>
+ <td>[<a href="https://wg21.link/temp.names">temp.names</a>]</td>
<td>tentatively ready</td>
<td>Remove redundancy "names or designates"</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3099">
<td><a href="https://cplusplus.github.io/CWG/issues/3099.html">3099</a></td>
+ <td>[<a href="https://wg21.link/temp.inst">temp.inst</a>]</td>
<td>open</td>
<td>Instantiation of type aliases from alias templates is unspecified</td>
<td align="center">Not resolved</td>
</tr>
<tr class="open" id="3100">
<td><a href="https://cplusplus.github.io/CWG/issues/3100.html">3100</a></td>
+ <td>[<a href="https://wg21.link/basic.start.term">basic.start.term</a>]</td>
<td>open</td>
<td>Destruction order for objects with static storage duration</td>
<td align="center">Not resolved</td>
diff --git a/clang/www/make_cxx_dr_status b/clang/www/make_cxx_dr_status
index 485a9a5..3ba12e1 100755
--- a/clang/www/make_cxx_dr_status
+++ b/clang/www/make_cxx_dr_status
@@ -10,26 +10,36 @@ output = os.path.join(clang_www_dir, 'cxx_dr_status.html')
dr_test_dir = os.path.join(clang_www_dir, '../test/CXX/drs')
class DR:
- def __init__(self, section, issue, url, status, title):
- self.section, self.issue, self.url, self.status, self.title = \
- section, issue, url, status, title
+ def __init__(self, *, section_number, section_name, section_link, number, url, status, liaison, title):
+ self.section_number, self.section_name, self.section_link, self.number, self.url, self.status, self.liaison, self.title = \
+ section_number, section_name, section_link, number, url, status, liaison, title
def __repr__(self):
- return '%s (%s): %s' % (self.issue, self.status, self.title)
-
-def parse(dr):
- try:
- section, issue_link, status, liaison, title = [
- col.split('>', 1)[1].split('</TD>')[0]
- for col in dr.split('</TR>', 1)[0].split('<TD')[1:]
- ]
- except Exception as ex:
- print(f"Parse error: {ex}\n{dr}", file=sys.stderr)
- sys.exit(1)
- _, url, issue = issue_link.split('"', 2)
- url = url.strip()
- issue = int(issue.split('>', 1)[1].split('<', 1)[0])
- title = title.replace('<issue_title>', '').replace('</issue_title>', '').replace('\r\n', '\n').strip()
- return DR(section, issue, url, status, title)
+ return '%s (%s): %s' % (self.number, self.status, self.title)
+
+ pattern = re.compile('''
+<TD.*>(?P<section_number>.*) <A href="(?P<section_link>.*)">(?P<section_name>.*)</A>
+</TD>
+<TD.*><A HREF="(?P<url>.*)">(?P<number>.*)</A></TD>
+<TD.*>(?P<status>.*)</TD>
+<TD.*>(?P<liaison>.*)</TD>
+<TD.*><issue_title>(?P<title>[\\w\\W]*)</issue_title></TD>
+</TR>''')
+
+ @classmethod
+ def parse_from_html(cls, html_string):
+ match = cls.pattern.match(html_string)
+ if match is None:
+ print(f"Parse error: {html_string}", file=sys.stderr)
+ exit(1)
+ return cls(
+ section_number=match.group('section_number'),
+ section_name=match.group('section_name'),
+ section_link=match.group('section_link'),
+ number=int(match.group('number')),
+ url=match.group('url'),
+ status=match.group('status'),
+ liaison=match.group('liaison'),
+ title=match.group('title').replace('\n', ' ').strip())
def collect_tests():
status_re = re.compile(r'\bcwg([0-9]+): (.*)')
@@ -68,8 +78,8 @@ def get_issues(path):
print(ex, file=sys.stderr)
sys.exit(1)
- return sorted((parse(dr) for dr in buffer.split('<TR>')[2:]),
- key = lambda dr: dr.issue)
+ return sorted((DR.parse_from_html(dr) for dr in buffer.split('<TR>')[2:]),
+ key = lambda dr: dr.number)
issue_list_path = None
@@ -127,9 +137,10 @@ out_html.append('''\
<p>This page tracks which C++ defect reports are implemented within Clang.</p>
-<table width="689" border="1" cellspacing="0">
+<table width="892" border="1" cellspacing="0">
<tr>
<th>Number</th>
+ <th>Section</th>
<th>Status</th>
<th>Issue title</th>
<th>Available in Clang?</th>
@@ -149,7 +160,7 @@ def availability(issue):
unresolved_status = unresolved_status_match.group(1)
proposed_resolution_match = re.search(r' (open|drafting|review|tentatively ready|ready) (\d{4}-\d{2}(?:-\d{2})?|P\d{4}R\d+)$', status)
if proposed_resolution_match is None:
- raise AvailabilityError('error: issue {}: \'{}\' status should be followed by a paper number (P1234R5) or proposed resolution in YYYY-MM-DD format'.format(dr.issue, unresolved_status))
+ raise AvailabilityError('error: issue {}: \'{}\' status should be followed by a paper number (P1234R5) or proposed resolution in YYYY-MM-DD format'.format(dr.number, unresolved_status))
proposed_resolution = proposed_resolution_match.group(2)
status = status[:-1-len(proposed_resolution)]
status = status[:-1-len(unresolved_status)]
@@ -236,7 +247,7 @@ def availability(issue):
avail = 'Duplicate of <a href="#%s">%s</a>' % (dup, dup)
_, avail_style, _, _ = availability(dup)
else:
- raise AvailabilityError('error: unknown status %s for issue %s' % (status, dr.issue))
+ raise AvailabilityError('error: unknown status %s for issue %s' % (status, dr.number))
return (avail + avail_suffix, avail_style, unresolved_status, details)
count = {}
@@ -254,7 +265,7 @@ for dr in drs:
elif dr.status in ('open', 'drafting', 'review', 'tentatively ready', 'ready'):
row_style = ' class="open"'
try:
- avail, avail_style, unresolved_status, details = availability(dr.issue)
+ avail, avail_style, unresolved_status, details = availability(dr.number)
except AvailabilityError as e:
availability_error_occurred = True
print(e.args[0])
@@ -267,12 +278,12 @@ for dr in drs:
if unresolved_status != dr.status:
availability_error_occurred = True
print("error: issue %s is marked '%s', which differs from CWG index status '%s'" \
- % (dr.issue, unresolved_status, dr.status))
+ % (dr.number, unresolved_status, dr.status))
continue
else:
row_style = ''
try:
- avail, avail_style, unresolved_status, details = availability(dr.issue)
+ avail, avail_style, unresolved_status, details = availability(dr.number)
except AvailabilityError as e:
availability_error_occurred = True
print(e.args[0])
@@ -281,7 +292,7 @@ for dr in drs:
if unresolved_status:
availability_error_occurred = True
print("error: issue %s is marked '%s', even though it is resolved in CWG index" \
- % (dr.issue, unresolved_status))
+ % (dr.number, unresolved_status))
continue
if not avail.startswith('Sup') and not avail.startswith('Dup'):
@@ -297,8 +308,9 @@ for dr in drs:
{details}
</details>'''
out_html.append(f'''
- <tr{row_style} id="{dr.issue}">
- <td><a href="https://cplusplus.github.io/CWG/issues/{dr.issue}.html">{dr.issue}</a></td>
+ <tr{row_style} id="{dr.number}">
+ <td><a href="https://cplusplus.github.io/CWG/issues/{dr.number}.html">{dr.number}</a></td>
+ <td>[<a href="{dr.section_link}">{dr.section_name}</a>]</td>
<td>{dr.status}</td>
<td>{dr.title}</td>
<td{avail_style} align="center">{avail}</td>