namespace std::meta {
consteval bool is_nothrow_swappable_with_type(info type_dst, info type_src);
}
概要
例外を送出せずに指定した2つの型の間でswap可能かを判定する。std::is_nothrow_swappable_withに対応する。
戻り値
type_dstとtype_srcが表す型の間で例外を送出せずにswap可能な場合にtrueを返す。
例外
type_dstまたはtype_srcが型を表さない場合、std::meta::exception例外を送出する。
例
#include <meta>
struct A {};
struct B {};
void swap(A&, B&) noexcept {}
void swap(B&, A&) noexcept {}
struct X {};
struct Y {};
void swap(X&, Y&) noexcept(false) {}
void swap(Y&, X&) noexcept(false) {}
int main() {
static_assert(std::meta::is_nothrow_swappable_with_type(^^A&, ^^B&));
static_assert(!std::meta::is_nothrow_swappable_with_type(^^X&, ^^Y&));
}
出力
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: 16 (
-freflectionオプション指定) ✅ - Visual C++: ??