The noexcept operator determines whether the evaluation of its operand, which is an unevaluated operand (Clause [expr]), can throw an exception ([except.throw]).
noexcept-expression: noexcept ( expression )
The result of the noexcept operator is a constant of type bool and is an rvalue.
The result of the noexcept operator is false if in a potentially-evaluated context the expression would contain
a potentially evaluated call80 to a function, member function, function pointer, or member function pointer that does not have a non-throwing exception-specification ([except.spec]), unless the call is a constant expression ([expr.const]),
a potentially evaluated throw-expression ([except.throw]),
a potentially evaluated dynamic_cast expression dynamic_cast<T>(v), where T is a reference type, that requires a run-time check ([expr.dynamic.cast]), or
a potentially evaluated typeid expression ([expr.typeid]) applied to a glvalue expression whose type is a polymorphic class type ([class.virtual]).
This includes implicit calls such as the call to an allocation function in a new-expression.