17 Language support library [language.support]

17.7 Type identification [support.rtti]

17.7.3 Class bad_­cast [bad.cast]

namespace std {
  class bad_cast : public exception {
    bad_cast() noexcept;
    bad_cast(const bad_cast&) noexcept;
    bad_cast& operator=(const bad_cast&) noexcept;
    const char* what() const noexcept override;
The class bad_­cast defines the type of objects thrown as exceptions by the implementation to report the execution of an invalid dynamic_­cast expression ([expr.dynamic.cast]).
const char* what() const noexcept override;
Returns: An implementation-defined ntbs.
Remarks: The message may be a null-terminated multibyte string, suitable for conversion and display as a wstring ([string.classes], [locale.codecvt])