@@ -3237,7 +3237,7 @@ option values if they were not already set by a command line option.
32373237 exc_spec_in_func_type = TRUE;
32383238 } /* if */
32393239#endif /* EXC_SPEC_IN_FUNC_TYPE_ENABLING_POSSIBLE */
3240- deduction_from_exc_spec_allowed = FALSE ;
3240+ deduction_from_exc_spec_allowed = microsoft_version >= 1951 ;
32413241 if (!option_kind_used[(int)optk_aligned_new]) {
32423242 overaligned_allocation_enabled = TRUE;
32433243 } /* if */
@@ -5928,13 +5928,7 @@ before this routine is called.
59285928 warn_on_deduced_return_types = TRUE;
59295929 } /* if */
59305930 } /* if */
5931- if (cpp17_mode) {
5932- /* g++ and clang allow deduction from the noexcept flag of a function
5933- parameter. */
5934- if (exc_spec_in_func_type) {
5935- deduction_from_exc_spec_allowed = TRUE;
5936- } /* if */
5937- } else {
5931+ if (!cpp17_mode) {
59385932 /* g++ and clang do not implement this as a DR in C++14 mode. Note that
59395933 clang has this disabled by default even in C++17 mode (as of 6.0.1).
59405934 But we don't have a separate option to enable this, so we still
@@ -13281,7 +13275,7 @@ variables declared in cmd_line.h.
1328113275 implicit_noexcept_enabled = FALSE;
1328213276 core_constant_expr_is_noexcept = FALSE;
1328313277 exc_spec_in_func_type = FALSE;
13284- deduction_from_exc_spec_allowed = FALSE ;
13278+ deduction_from_exc_spec_allowed = TRUE ;
1328513279 delegating_constructors_enabled = FALSE;
1328613280 inheriting_constructors_enabled = FALSE;
1328713281 constexpr_enabled = FALSE;
0 commit comments