YSTest: YBase Specified Pseudo-Keywords

YSTest PreAlpha_b700_20160611 The YSLib Test Project

- 首页
- 相关页面
- 模块
- 命名空间
- 类
- 文件

宏定义
YBase Specified Pseudo-Keywords

YBase 指定的替代关键字。 更多...

## 宏定义

#define | yalignas(_expr) YB_ATTR(__aligned__(_expr))
| 指定特定类型的对齐。 更多...
#define | yalignas_type(_type) YB_ATTR(__aligned__(__alignof(_type)))
#define | yalignof(_type) std::alignment_of<_type>::value
| 指定特定类型的对齐。 更多...
#define | yconstexpr
| 指定编译时常量表达式。 更多...
#define | yconstfn inline
| 指定编译时常量函数。 更多...
#define | yconstfn_relaxed inline
| 指定编译时没有 C++11 限制和隐式成员 const 的常量函数。 更多...
#define | yfname "<unknown-fn>"
| 展开为表示函数名的预定义变量的宏。 更多...
#define | yfsig "<unknown-fsig>"
| 展开为表示函数签名的预定义变量的宏。 更多...
#define | ynoexcept(...)
| YSLib 无异常抛出保证：指定特定的异常规范。 更多...
#define | ynoexcept_assert(_msg, ...)
| 表达式 `noexcept` 静态断言。 更多...
#define | ynothrow ythrow()
| YSLib 无异常抛出保证：若支持 noexcept 关键字， 指定特定的 noexcept 异常规范。 更多...
#define | ynothrowv
| YSLib 无异常抛出保证验证：有条件地使用无异常抛出规范。 更多...
#define | ynoexcept_spec(...) ynoexcept(noexcept(__VA_ARGS__))
| 表达式 `noexcept` 异常规范。 更多...
#define | ythread static
| 线程局部存储：若实现支持，指定为 `thread_local` 。 更多...
#define | ythrow(...)
| YSLib 动态异常规范：根据是否使用异常规范宏指定或忽略动态异常规范。 更多...
#define | yoffsetof(_type, _member)
| 带有静态类型检查的成员偏移计算。 更多...
#define | yforward(_expr) std::forward<decltype(_expr)>(_expr)
| 根据参数类型使用 std::forward 传递对应参数。 更多...
#define | yunseq ystdex::unsequenced
| 无序列依赖表达式组求值。 更多...
#define | yconstraint(_expr)
| 约束：接口语义。 更多...
#define | yassume(_expr) assert(_expr)
| 假定：环境语义。 更多...

## 详细描述

YBase 指定的替代关键字。

自从
  build 362

## 宏定义说明

#define yalignas | ( |  | _expr | ) | YB_ATTR(__aligned__(_expr))

指定特定类型的对齐。

注解
  同 C++11 alignas 作用于类型时的语义。

自从
  build 591

待办事项:
  判断没有内建关键字支持时属性存在及没有属性支持时的其它情况。

在文件 ydef.h 第 621 行定义.

#define yalignas_type | ( |  | _type | ) | YB_ATTR(__aligned__(__alignof(_type)))

在文件 ydef.h 第 622 行定义.

#define yalignof | ( |  | _type | ) | std::alignment_of<_type>::value

指定特定类型的对齐。

注解
  同 C++11 alignof 作用于类型时的语义。

自从
  build 315

在文件 ydef.h 第 634 行定义.

#define yassume | ( |  | _expr | ) | assert(_expr)

假定：环境语义。

注解
  和普通断言相比强调非接口契约。对移植特定的平台实现时应予以特别注意。

自从
  build 535

运行时检查的环境条件约束断言。用于明确地非 yconstraint 适用的情形。

在文件 cassert.h 第 99 行定义.

参考自 NPL::SContext::Analyze(), platform_ex::Attach(), CHRLib::GUCSMapper< CharSet::GBK >::Decode(), ystdex::erase_n(), ystdex::extract(), ystdex::nifty_counter< _type >::get(), ystdex::get_mid(), ystdex::any_ops::holder_handler< _tHolder >::get_pointer(), ystdex::any_ops::ref_handler< _type >::get_reference(), ystdex::any_ops::value_handler< _tHolder >::get_reference_impl(), ystdex::path< _tSeqCon, _tTraits >::merge_parents(), ystdex::container_inserter< _tCon >::operator()(), ystdex::indirect_input_iterator< _tIter >::operator*(), ystdex::subscriptive_iterator< _tCon, _type, _tDifference, _tPointer, _tReference >::operator*(), ystdex::bitseg_iterator< _vN, _bEndian >::operator++(), ystdex::ifile_iterator::operator++(), ystdex::indirect_input_iterator< _tIter >::operator++(), ystdex::bitseg_iterator< _vN, _bEndian >::operator+=(), ystdex::transposed_iterator< _tIter >::operator+=(), ystdex::bitseg_iterator< _vN, _bEndian >::operator--(), ystdex::prototyped_iterator< _type, _fUpdater >::operator-=(), ystdex::subscriptive_iterator< _tCon, _type, _tDifference, _tPointer, _tReference >::operator-=(), ystdex::polymorphic_crosscast(), ystdex::polymorphic_downcast(), ystdex::transposed_iterator< _tIter >::share_sequence(), ystdex::recent_used_list< _tKey, _tMapped, _tAlloc >::shrink(), ystdex::recent_used_list< _tKey, _tMapped, _tAlloc >::undo_emplace(), ystdex::vsfmt() , 以及 ystdex::thread_pool::wait_to_enqueue().

#define yconstexpr

指定编译时常量表达式。

注解
  同 C++11 constepxr 作用于编译时常量的语义。

自从
  build 246

在文件 ydef.h 第 653 行定义.

参考自 YSLib::UI::ATrack::CheckArea(), platform::EnsureUniqueFile(), YSLib::Environment::Environment(), main(), ystdex::native_byte_order() , 以及 YReader::ShlExplorer::OnPaint().

#define yconstfn inline

指定编译时常量函数。

注解
  同 C++11 constepxr 作用于编译时常量函数的语义。

自从
  build 266

在文件 ydef.h 第 654 行定义.

#define yconstfn_relaxed inline

指定编译时没有 C++11 限制和隐式成员 const 的常量函数。

注解
  同 C++14 constepxr 作用于编译时常量函数的语义。

自从
  build 591

在文件 ydef.h 第 666 行定义.

#define yconstraint | ( |  | _expr | ) |

值:
((_expr) ? void(0) : ystdex::yassert(#_expr, __FILE__, __LINE__, \
"Constraint violation."))
ystdex::yassert
void yassert(const char *, const char *, int, const char *)
YBase 默认断言函数。
Definition: cassert.cpp:36

约束：接口语义。

注解
  和普通断言相比强调接口契约。对移植特定的平台实现时应予以特别注意。
  保证兼容 ISO C++11 constexpr 模板。

参见
  $2015-10 @ Documentation::Workflow::Annual2015.

自从
  build 535

运行时检查的接口语义约束断言。不满足此断言的行为是接口明确地未定义的，行为不可预测。

在文件 cassert.h 第 82 行定义.

参考自 ystdex::basic_string_view< _tChar, _tTraits >::back(), ystdex::details::any_base::call(), ystdex::clamp(), ystdex::details::any_base::clear(), ystdex::concat(), ystdex::construct(), ystdex::basic_string_view< _tChar, _tTraits >::copy(), ystdex::details::any_base::copy(), ystdex::details::any_base::destroy(), ystdex::destruct(), CHRLib::GUCSMapper< CharSet::UTF_8 >::Encode(), ystdex::details::str_algos< 0 >::erase_left(), ystdex::details::str_algos< 1 >::erase_left(), ystdex::erase_left(), ystdex::details::str_algos< 0 >::erase_right(), ystdex::details::str_algos< 1 >::erase_right(), ystdex::erase_right(), ystdex::exists_substr(), ystdex::fexists(), ystdex::block_buffer::fill(), ystdex::basic_string_view< _tChar, _tTraits >::front(), ystdex::ifile_iterator::ifile_iterator(), ystdex::insert_reversed(), ystdex::details::invoke_impl(), ystdex::ltrim(), CHRLib::MakeUCS2LE(), CHRLib::MakeUCS4LE(), CHRLib::Transcoding< _vFrom, _vTo, _tDispatcher >::MakeViewTranscoded(), CHRLib::Transcoding< _vFrom, CharSet::Null, _tDispatcher >::MakeViewTranscoded(), CHRLib::MBCSToUCS2(), CHRLib::MBCSToUCS4(), CHRLib::MBCToUC(), ystdex::next_if(), ystdex::next_if_eq(), ystdex::ntctschr(), ystdex::ntctscmp(), ystdex::ntctscpy(), ystdex::ntctsfind(), ystdex::ntctsicmp(), ystdex::ntctslen(), ystdex::ntctsmove(), ystdex::ntctsncpy(), ystdex::basic_string_view< _tChar, _tTraits >::operator std::basic_string< _tChar, _tTraits, _tAlloc >(), ystdex::bitseg_iterator< _vN, _bEndian >::operator*(), ystdex::pointer_iterator< _type >::operator*(), ystdex::observer_ptr< _type >::operator*(), ystdex::transposed_iterator< _tIter >::operator*(), ystdex::bitseg_iterator< _vN, _bEndian >::operator++(), ystdex::pointer_iterator< _type >::operator++(), ystdex::transposed_iterator< _tIter >::operator++(), ystdex::bitseg_iterator< _vN, _bEndian >::operator+=(), ystdex::pointer_iterator< _type >::operator+=(), ystdex::bitseg_iterator< _vN, _bEndian >::operator--(), ystdex::transposed_iterator< _tIter >::operator--(), ystdex::pointer_iterator< _type >::operator-=(), ystdex::basic_string_view< _tChar, _tTraits >::operator[](), ystdex::pack_uint(), ystdex::block_buffer::read(), ystdex::read_uint_be(), ystdex::read_uint_le(), ystdex::basic_string_view< _tChar, _tTraits >::remove_prefix(), ystdex::basic_string_view< _tChar, _tTraits >::remove_suffix(), ystdex::retry_for_vector(), ystdex::rtrim(), ystdex::search_map(), ystdex::setnbuf(), ystdex::ifile_iterator::sputbackc(), ystdex::str_find(), ystdex::str_find_first_not_of(), ystdex::str_find_first_of(), ystdex::str_find_last_not_of(), ystdex::str_find_last_of(), ystdex::str_rfind(), ystdex::string_begin(), ystdex::basic_string_view< _tChar, _tTraits >::to_string(), ystdex::transform_n(), ystdex::transform_when(), ystdex::trim(), ystdex::trivially_copy_n(), ystdex::trivially_move_n(), CHRLib::UCS2ToMBCS(), CHRLib::UCS2ToUCS4(), CHRLib::UCS4ToMBCS(), CHRLib::UCS4ToUCS2(), CHRLib::UCToMBC(), ystdex::any::unchecked_any_cast(), ystdex::unpack_uint(), ystdex::any::unsafe_any_cast(), ystdex::basic_tstring_view< _tChar, _tTraits, 0 >::verify(), ystdex::basic_tstring_view< _tChar, _tTraits, 0 >::verify_term(), ystdex::vfmtlen(), ystdex::block_buffer::write(), ystdex::write_uint_be() , 以及 ystdex::write_uint_le().

#define yfname "<unknown-fn>"

展开为表示函数名的预定义变量的宏。

自从
  build 628

待办事项:
  判断语言实现版本。

在文件 ydef.h 第 682 行定义.

#define yforward | ( |  | _expr | ) | std::forward<decltype(_expr)>(_expr)

根据参数类型使用 std::forward 传递对应参数。

自从
  build 245

传递参数：按类型保持值类别(value catory) 和 cv-qualifier 。 当表达式类型为函数或函数引用类型时，结果为左值(lvalue) ，否则： 当且仅当左值引用类型时结果为左值（此时类型不变）； 否则结果为对应的右值引用类型的消亡值(xvalue) 。 因为允许使用右值对象引用类型的左值作为参数，此时直接用函数模板的参数匹配无法区分实际 参数的类型而错误地转移为左值，因此不能通过函数模板直接匹配不同的引用实现。

在文件 ydef.h 第 969 行定义.

参考自 YSLib::ValueNode::AccessChild(), YSLib::ValueNode::AccessChildPtr(), YSLib::AccessNode(), YSLib::AccessNodePtr(), YSLib::UI::AccessWidget(), YSLib::UI::ActOnHover(), YSLib::Application::AddExit(), YSLib::UI::Styles::AddHandlers(), YSLib::AddUnique(), YSLib::ValueNode::AddValueTo(), YSLib::UI::AddWidgetHandlerAdaptor(), ystdex::aligned_replace_cast(), ystdex::aligned_store_cast(), ystdex::apply(), YSLib::AsIndexNode(), YSLib::NodeLiteral::AsNodeLiteral(), ystdex::details::optional_base< _type, true >::assign(), ystdex::standard_layout_storage< _type >::assign(), ystdex::assign(), ytest::timing::average(), ystdex::bind1(), ystdex::bind_forward(), YSLib::Drawing::BlendRectRaw(), YSLib::Drawing::BlitRectLines(), YSLib::Drawing::BlitRectPixels(), ystdex::cache_lookup(), ystdex::call_projection< _tRet(_tParams...), index_sequence< _vSeq... > >::call(), ystdex::call_projection< std::tuple< _tParams... >, index_sequence< _vSeq... > >::call(), ystdex::expand_proxy< _fCallable, _vLen >::call(), ystdex::details::call_for_value(), ystdex::call_for_value(), ystdex::single_thread::call_once(), ystdex::chain_apply(), platform::CheckIter(), YSLib::CollectNodes(), YSLib::Drawing::CompositeRectRaw(), ystdex::concat(), ystdex::construct(), ystdex::details::optional_base< _type, true >::construct(), ystdex::any_ops::construct(), ystdex::details::state_guard_impl< _type, _tToken >::construct_and_save(), ystdex::construct_in(), ystdex::construct_range(), ystdex::details::optional_base< _type, true >::construct_raw(), CHRLib::ConvertCharacter(), YSLib::UI::CreateUniqueWidget(), YSLib::GHandlerAdaptor< void, _func >::DefDeCopyCtor(), YSLib::UI::Styles::StyleMap::DefGetter(), platform::Deref(), ystdex::recent_used_list< _tKey, _tMapped, _tAlloc >::emplace(), ystdex::used_list_cache< CacheKey, shared_ptr< Image >, CacheHash >::emplace(), ystdex::optional< _type >::emplace(), ystdex::mapped_set< _type, _fComp, _tAlloc >::emplace(), YSLib::ValueObject::Emplace(), ystdex::details::any_emplace< any >::emplace(), ystdex::mapped_set< _type, _fComp, _tAlloc >::emplace_hint(), ystdex::emplace_hint_in_place(), ystdex::details::any_emplace< any >::emplace_with_handler(), YSLib::ValueObject::EmplaceIfEmpty(), ystdex::thread_pool::enqueue(), ystdex::details::erase_all_in_seq(), ytest::expect(), YSLib::Drawing::FillRectRaw(), ystdex::find_prefix(), ystdex::find_suffix(), ystdex::forward_as_array(), ystdex::variadic_param< _vN >::get(), ystdex::variadic_param< 0U >::get(), ystdex::get_init(), YSLib::GHEvent< _tRet(_tParams...)>::GHEvent(), ystdex::handle_nested(), YSLib::ValueNode::ImplRet(), YSLib::ImplRet(), ystdex::any_ops::value_handler< _tHolder >::init(), ystdex::any_ops::value_handler< _tHolder >::init_impl(), YSLib::ValueNode::insert_or_assign(), ystdex::details::insert_or_assign(), ystdex::insert_or_assign(), ystdex::insert_or_assign_hint(), NPL::SXML::InsertAttributeNode(), NPL::InsertChildSyntaxNode(), NPL::InsertSyntaxNode(), YSLib::UI::InsertWidget(), ystdex::invoke(), ystdex::call_projection< _tRet(_tParams...), index_sequence< _vSeq... > >::invoke(), ystdex::call_projection< std::tuple< _tParams... >, index_sequence< _vSeq... > >::invoke(), ystdex::details::invoke_impl(), ystdex::invoke_nonvoid(), ystdex::details::invoke_nonvoid_impl(), ystdex::iterate_exceptions(), NPL::A1::LoadNode(), NPL::A1::LoadNodeSequence(), platform::Logger::Log(), ystdex::make_container(), ystdex::expanded_caller< _fHandler, _fCallable >::make_expanded(), ystdex::guard< _func, _bNoThrow >::make_guard(), ystdex::make_optional(), ystdex::make_optional_inplace(), ystdex::thunk< _tRet, _fCallable >::make_thunk(), ystdex::transformed_iterator< _tIter, _fTrans, _tReference >::make_transform(), ystdex::transposed_iterator< _tIter >::make_transposed(), ystdex::cpp2014::make_unique(), ystdex::make_unique_with(), NPL::SXML::MakeAttributeLiteral(), NPL::SXML::MakeAttributeTagLiteral(), YSLib::ValueNode::MakeNode(), NPL::SXML::MakeTop(), CHRLib::Transcoding< _vFrom, _vTo, _tDispatcher >::MakeTranscoded(), CHRLib::Transcoding< _vFrom, CharSet::Null, _tDispatcher >::MakeTranscoded(), CHRLib::Transcoding< _vFrom, _vTo, _tDispatcher >::MakeViewTranscoded(), CHRLib::Transcoding< _vFrom, CharSet::Null, _tDispatcher >::MakeViewTranscoded(), YSLib::UI::MakeWidgetHandlerAdaptor(), ystdex::nifty_counter< _type >::nifty_counter(), platform::Nonnull(), YSLib::IO::NormalizeDirectoryPathTail(), ystdex::ntctsncpy(), ytest::timing::once(), ytest::timing::once_c(), ystdex::id< void >::operator()(), ystdex::mem_get< _type >::operator()(), ystdex::mem_get< void >::operator()(), YSLib::CountedHandlerInvoker::operator()(), ystdex::container_inserter< _tCon >::operator()(), ystdex::optional_last_value< _type >::operator()(), ystdex::composed< _func1, _func2 >::operator()(), ystdex::one_shot< _func, _tRes, _tState >::operator()(), ystdex::one_shot< _func, void, _tState >::operator()(), YSLib::GDependencyEvent< _tEvent, _tOwnerPointer >::operator()(), YSLib::GEventWrapper< YSLib::GEvent< void(YSLib::UI::PaintEventArgs &&)>, YSLib::UI::UIEventArgs && >::operator()(), ystdex::expanded_caller< _fHandler, _fCallable >::operator()(), ystdex::standard_layout_storage< _type >::operator=(), ystdex::optional< _type >::operator=(), ystdex::any::operator=(), ystdex::operator|(), ystdex::details::pack_obj_impl< _type >::pack(), ystdex::details::pack_obj_impl< std::unique_ptr< _type, _tDeleter > >::pack(), ystdex::details::pack_obj_impl< std::shared_ptr< _type > >::pack(), ystdex::pack_object(), ystdex::pack_shared_task(), ystdex::pack_task(), YSLib::PackNodes(), YSLib::ValueNode::Place(), ystdex::task_pool::poll(), ystdex::task_pool::poll_for(), ystdex::task_pool::poll_until(), YSLib::PostTask(), YSLib::Drawing::PutChar(), YSLib::Drawing::PutText(), ystdex::raise_exception(), NPL::A1::RegisterFunction(), ystdex::replace_cast(), YSLib::UI::GAnimationSession< InvalidationUpdater >::Reset(), ystdex::retry_on_cond(), ystdex::search_map(), ystdex::seq_apply(), ystdex::seq_insert(), ystdex::share_raw(), ystdex::recent_used_list< _tKey, _tMapped, _tAlloc >::shrink(), ystdex::standard_layout_storage< _type >::standard_layout_storage(), ystdex::state_guard< _type, _tCond, _tToken >::state_guard(), ystdex::state_guard< _type, void, _tToken >::state_guard(), ystdex::ston(), ystdex::strict_all_of(), ystdex::strict_any_of(), YSLib::ValueNode::StringifyToNode(), YSLib::UI::Styles::StyleMap::StyleMap(), ystdex::throw_error(), NPL::A1::ToContextHandler(), ytest::timing::total(), ytest::timing::total_c(), ystdex::trail(), ystdex::trim(), YSLib::ValueNode::try_emplace(), ystdex::try_emplace(), ystdex::try_emplace_hint(), ystdex::any_ops::value_handler< _tHolder >::try_init(), YSLib::TryInvoke(), ystdex::uninitialized_construct(), ystdex::uninitialized_construct_n(), ystdex::unique_raw(), ystdex::unseq_apply(), ystdex::unsequenced(), ystdex::optional< _type >::value_or(), ystdex::varg(), ystdex::vector_concat(), ystdex::task_pool::wait(), ystdex::task_pool::wait_for(), ystdex::thread_pool::wait_to_enqueue(), ystdex::task_pool::wait_to_enqueue() , 以及 ystdex::task_pool::wait_until().

#define yfsig "<unknown-fsig>"

展开为表示函数签名的预定义变量的宏。

自从
  build 628

待办事项:
  判断语言实现版本。

在文件 ydef.h 第 702 行定义.

参考自 main() , 以及 YReader::ShlTextReader::~ShlTextReader().

#define ynoexcept | ( |  | ... | ) |

YSLib 无异常抛出保证：指定特定的异常规范。

自从
  build 319

在文件 ydef.h 第 720 行定义.

参考自 YSLib::UI::Setup().

#define ynoexcept_assert | ( |  | _msg,
|  |  | ...
| ) |  |

表达式 `noexcept` 静态断言。

自从
  build 586

在文件 ydef.h 第 721 行定义.

参考自 CHRLib::GUCSMapper< CharSet::UTF_8 >::Assign1(), CHRLib::GUCSMapper< CharSet::UTF_8 >::Assign2(), ystdex::details::optional_base< _type, true >::destroy_raw(), CHRLib::GUCSMapper< CharSet::UTF_8 >::Encode(), ystdex::transposed_iterator< _tIter >::get(), ystdex::transposed_iterator< _tIter >::get_index(), CHRLib::ImplRet() , 以及 ystdex::polymorphic_downcast().

#define ynoexcept_spec | ( |  | ... | ) | ynoexcept(noexcept(__VA_ARGS__))

表达式 `noexcept` 异常规范。

自从
  build 586

在文件 ydef.h 第 768 行定义.

参考自 YSLib::UI::Setup() , 以及 YSLib::UI::SetupByTimer().

#define ynothrow ythrow()

YSLib 无异常抛出保证：若支持 noexcept 关键字， 指定特定的 noexcept 异常规范。

注解
  YB_IMPL_MSCPP >= 1200 时支持 __declspec(nothrow) 行为和 throw() 基本一致， 但语法（顺序）不同。
  指定 ynothrow 的函数具有 wide constraint ， 即保证违反前置条件不引起未定义行为。

参见
  ynothrowv
  ynoexcept

在文件 ydef.h 第 740 行定义.

参考自 YSLib::UI::MUIContainer::Contains(), ystdex::copy_when(), ystdex::thread_pool::enqueue(), YSLib::FetchDefaultFontCache(), YReader::FetchImage(), YSLib::FetchMIMEBiMapping(), ystdex::path< _tSeqCon, _tTraits >::filter_self(), YSLib::Drawing::ImplDeDtor(), NPL::ImplRet(), CHRLib::ImplRet(), YSLib::LoadComponents(), YReader::ShlTextReader::LoadFile(), CHRLib::UCS2ToUCS4(), CHRLib::UCS4ToUCS2(), platform::FAT::LFN::ValidateName() , 以及 ystdex::yassert().

#define ynothrowv

YSLib 无异常抛出保证验证：有条件地使用无异常抛出规范。

注解
  指定 ynothrowv 的函数具有 narrow constraint ， 即不保证违反前置条件时不引起未定义行为。

参见
  ynothrow

自从
  build 461

按 WG21/N3248 要求，表示 narrow constraint 的无异常抛出接口。 对应接口违反约束可引起未定义行为。 因为可能显著改变程序的可观察行为，需要允许抛出异常进行验证时不适用。 除非能静态验证不抛出异常，一般只应直接或间接调用 ynothrow 安全修饰的函数。 验证结束后，确保不存在未定义行为时可以启用以提升性能。

在文件 ydef.h 第 760 行定义.

参考自 YSLib::GUIApplication::DealMessage() , 以及 YSLib::Environment::Environment().

#define yoffsetof | ( |  | _type,
|  |  | _member
| ) |  |

值:
(decltype(sizeof(ystdex::offsetof_check<std::is_member_object_pointer< \
decltype(&_type::_member)>::value, ynoexcept(offsetof(_type, _member)), \
_type>))(offsetof(_type, _member)))
ystdex::offsetof_check
成员偏移计算静态类型检查。
Definition: ydef.h:926
ynoexcept
#define ynoexcept(...)
YSLib 无异常抛出保证：指定特定的异常规范。
Definition: ydef.h:720

带有静态类型检查的成员偏移计算。

参见
  ISO C++ 18.2/4 。

注解
  某些 G++ 和 Clang++ 版本可使用 __builtin_offsetof 及 -Winvalid-offsetof ， 但可移植性较差。

自从
  build 325

在文件 ydef.h 第 952 行定义.

#define ythread static

线程局部存储：若实现支持，指定为 `thread_local` 。

警告
  MinGW GCC 使用的 emutls 实现缺陷导致静态初始化可能失败。

自从
  build 425

待办事项:
  加入 `__thread` 和 `__declspec(thread)` 。

在文件 ydef.h 第 780 行定义.

参考自 ystdex::nifty_counter< _type >::get_count() , 以及 ystdex::nifty_counter< _type >::get_object_ptr().

#define ythrow | ( |  | ... | ) |

YSLib 动态异常规范：根据是否使用异常规范宏指定或忽略动态异常规范。

注解
  ythrow = "yielded throwing" 。

在文件 ydef.h 第 791 行定义.

#define yunseq ystdex::unsequenced

无序列依赖表达式组求值。

注解
  由于实现限制，无法用于 void 类型表达式组。
  使用一元形式 `yunsequenced((_expr))` 的形式标记表达式组 但不取消序列关系。
  支持嵌套使用。

警告
  非一元形式禁止用于产生对同一对象的未序列化的(unsequenced) 副作用 的表达式，否则存在未定义行为。
  非一元形式不适用于对顺序有依赖的表达式，包括所有可能抛出异常且对抛出 顺序敏感（例如 std::bad_cast 处理顺序不同可能造成内存泄露）的表达式。

自从
  build 266

在文件 ydef.h 第 996 行定义.

参考自 ystdex::tuple_iterator< _tIter, _tTraits, _tSlaves >::add(), YSLib::DS::UI::DualScreenReader::AdjustMargins(), YSLib::UI::AView::AView(), YSLib::UI::TextPlaceholder::BindByFocus(), YSLib::Drawing::Shaders::BlendCore(), YSLib::Drawing::BlitBounds(), YSLib::UI::Caret::Caret(), ystdex::single_thread::unique_lock< _tMutex >::clear_members(), platform_ex::ClearKeyStates(), YSLib::Drawing::TextRegion::ClearLine(), platform::FAT::ConvertFileTime(), platform::FAT::LFN::ConvertToAlias(), YSLib::Text::CopySliceFrom(), ystdex::tuple_iterator< _tIter, _tTraits, _tSlaves >::dec(), YSLib::UI::DialogBox::DialogBox(), YSLib::Devices::InputManager::DispatchInput(), YSLib::Drawing::DrawPolygon(), NPL::Escape(), YReader::ShlReader::Exit(), YReader::FetchImage(), YSLib::Drawing::FetchStringOffsets(), ystdex::block_buffer::fill(), CHRLib::FillByte(), YSLib::UI::TreeList::GetNodePath(), YSLib::UI::HexViewArea::HexViewArea(), YSLib::UI::HoverUpdater::HoverUpdater(), YSLib::Drawing::HSV::HSV(), YSLib::UI::ImplDeDtor(), YReader::ImplDeDtor(), ystdex::tuple_iterator< _tIter, _tTraits, _tSlaves >::inc(), YSLib::DS::UI::DualScreenReader::LoadText(), main(), YSLib::UI::AMUnitControlList::MakeIterator(), YSLib::UI::MakeLabel(), YSLib::UI::Menu::Menu(), ystdex::ntctscmp(), ystdex::ntctscpy(), ystdex::ntctsicmp(), ystdex::ntctsmove(), YSLib::DS::ShlDS::OnInput(), ystdex::openmode_conv(), YSLib::Drawing::VerticalLineTransfomer::operator()(), YSLib::Drawing::BlitScannerLoop< _bDec >::operator()(), YSLib::CountedHandlerInvoker::operator()(), YSLib::Drawing::CopyLine< _bDec >::operator()(), YSLib::Text::TextFileBuffer::iterator::operator++(), ystdex::bitseg_iterator< _vN, _bEndian >::operator++(), ystdex::transposed_iterator< _tIter >::operator++(), ystdex::bitseg_iterator< _vN, _bEndian >::operator+=(), ystdex::transposed_iterator< _tIter >::operator+=(), ystdex::bitseg_iterator< _vN, _bEndian >::operator--(), ystdex::transposed_iterator< _tIter >::operator--(), YReader::SettingPanel::operator>>(), YSLib::UI::ProgressBar::ProgressBar(), ystdex::block_buffer::read(), YSLib::UI::ProgressBar::Refresh(), YSLib::UI::HexViewArea::Refresh(), YSLib::UI::InputTimer::RefreshHeld(), ystdex::basic_string_view< _tChar, _tTraits >::remove_prefix(), YSLib::UI::AMUnitList::ResetView(), YSLib::Drawing::TextRegion::Scroll(), YSLib::DS::UI::DualScreenReader::SetLineGap(), YSLib::Drawing::Font::SetStyle(), YReader::ShlTextReader::SettingSession::SettingSession(), YSLib::UI::SetupContentsOf(), NPL::A1::SetupTraceDepth(), YSLib::Drawing::Typeface::SmallBitmapData::SmallBitmapData(), YSLib::UI::Caret::Stop(), ystdex::tuple_iterator< _tIter, _tTraits, _tSlaves >::subtract(), YSLib::UI::TextBox::TextBox(), YSLib::UI::TextList::TextList(), YSLib::UI::Thumb::Thumb(), ystdex::transform_n(), ystdex::transform_when(), NPL::A1::TransformNode(), NPL::A1::TransformNodeSequence(), YSLib::UI::TreeList::TreeList(), ystdex::trivially_copy_n(), ystdex::trivially_move_n(), ystdex::single_thread::unique_lock< _tMutex >::unique_lock(), YSLib::DS::UI::DualScreenReader::UnloadText(), ystdex::unseq_apply(), YReader::ShlTextReader::UpdateButtons(), YReader::ReaderBox::UpdateData(), YReader::TextInfoBox::UpdateData(), YSLib::UI::HexViewArea::UpdateData(), YSLib::UI::TabControl::UpdateTabPages(), YSLib::UI::BorderResizer::Wrap() , 以及 ystdex::block_buffer::write().