std::meta::exception

来自cppreference.com
< cpp | meta
 
 
元编程库
类型特征
类型类别
(C++11)
(C++11)(DR*)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11) 
(C++11)
(C++11)
类型属性
(C++11)
(C++11)
(C++14)
(C++11)(C++26 弃用)
(C++11)(C++20 前*)
(C++11)(C++20 弃用)
(C++11)
类型特征常量
元函数
(C++17)
受支持操作
关系与属性查询
类型修改
(C++11)(C++11)(C++11)
类型变换
(C++11)(C++23 弃用)
(C++11)(C++23 弃用)
(C++11)
(C++11)(C++20 前*)(C++17)

(C++11)
(C++17)
编译时有理数算术
编译时整数序列
 
在标头 <meta> 定义
class exception : public std::exception
(C++26 起)

定义一种对象类型,供反射函数在失败时抛出。

std::meta::exception 类型的对象只能在常量求值中创建和访问。

成员函数

(构造函数)
构造一个 meta::exception 对象
(公开成员函数)
what
返回解释性字符串
(公开成员函数)
u8what
std::u8string_view 的形式返回解释性字符串
(公开成员函数)
from
返回关联的 std::meta::info 对象
(公开成员函数)
where
返回关联的 std::source_location
(公开成员函数)

std::meta::exception::exception

consteval exception( std::u8string_view u8what_arg, std::meta::info from,
                     std::source_location where = std::source_location::current() ) noexcept;
(1)
consteval exception( std::string_view what_arg, std::meta::info from,
                     std::source_location where = std::source_location::current() ) noexcept;
(2)
consteval exception( const exception& ) = default;
(3)
consteval exception( exception&& ) = default;
(4)

构造一个新的 std::meta::info 对象。用相应的形参初始化存储的值。

1) 如果 u8what_arg 能用普通字面量编码表示,那么 what() 返回的解释性字符串是将 u8what_arg 从 UTF-8 转码到普通字面量编码的结果;否则,对 what() 的调用不是常量表达式。
2) what_arg 必须能用 UTF-8 表示。
3) 复制构造函数为预置的。
4) 移动构造函数为预置的。

std::meta::exception::what

constexpr const char* what() const noexcept override;

返回构造时传入的解释性字符串,可能已从 UTF-8 转码到普通字面量编码。

std::meta::exception::u8what

consteval std::u8string_view u8what() const noexcept;

返回构造时传入的解释性字符串,可能已从普通字面量编码转码到 UTF-8。

std::meta::exception::from

consteval std::meta::info from() const noexcept;

返回构造时传入的 std::meta::info 值。

std::meta::exception::where

consteval std::source_location where() const noexcept;

返回构造时传入的 std::source_location 值。

示例