NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
参数转发函数

参数转发函数实现 更多...

参数转发函数 的协作图:

函数

template<typename T>
constexpr T && neforce::forward (remove_reference_t< T > &x) noexcept
 完美转发左值
template<typename T>
constexpr T && neforce::forward (remove_reference_t< T > &&x) noexcept
 完美转发右值
template<typename T>
constexpr remove_reference_t< T > && neforce::move (T &&x) noexcept
 无条件转换为右值引用
template<typename T>
constexpr conditional_t<!is_nothrow_move_constructible< T >::value &&is_copy_constructible< T >::value, const T &, T && > neforce::move_if_noexcept (T &x) noexcept
 在安全的情况下执行移动操作
template<typename T>
constexpr T * neforce::addressof (T &x) noexcept
 获取对象的地址
template<typename T>
const T * neforce::addressof (const T &&)=delete
 禁止获取const右值的地址

详细描述

参数转发函数实现

函数说明

◆ addressof() [1/2]

template<typename T>
const T * neforce::addressof ( const T && )
delete

禁止获取const右值的地址

模板参数
T对象类型
注解
删除const右值重载以防止悬垂引用

引用了 addressof().

◆ addressof() [2/2]

template<typename T>
T * neforce::addressof ( T & x)
nodiscardconstexprnoexcept

获取对象的地址

模板参数
T对象类型
参数
x对象引用
返回
对象的指针

可避免重载的operator&干扰

在文件 type_traits.hpp3084 行定义.

引用了 addressof().

被这些函数引用 addressof(), addressof(), neforce::allocated_ptr< Alloc >::allocated_ptr(), neforce::allocated_ptr< Alloc >::allocated_ptr(), atomic_exchange_any(), neforce::atomic_ref_base< T *, false, false >::atomic_ref_base(), neforce::atomic_ref_base< T, false, false >::atomic_ref_base(), atomic_store_any(), neforce::back_insert_iterator< Container >::back_insert_iterator(), neforce::atomic< T >::compare_exchange_strong(), neforce::atomic< T >::compare_exchange_strong(), neforce::atomic_base< T * >::compare_exchange_strong(), neforce::atomic_base< T * >::compare_exchange_strong(), neforce::atomic< T >::compare_exchange_weak(), neforce::atomic< T >::compare_exchange_weak(), neforce::atomic_base< T * >::compare_exchange_weak(), neforce::atomic_base< T * >::compare_exchange_weak(), neforce::optional< T & >::emplace(), neforce::atomic< T >::exchange(), neforce::atomic< T >::exchange(), neforce::atomic_base< T * >::fetch_add(), neforce::atomic_base< T * >::fetch_add(), neforce::atomic_base< T * >::fetch_sub(), neforce::atomic_base< T * >::fetch_sub(), neforce::front_insert_iterator< Container >::front_insert_iterator(), neforce::insert_iterator< Container >::insert_iterator(), neforce::atomic< T >::load(), neforce::atomic< T >::load(), neforce::basic_string< char >::operator=(), neforce::basic_string< char >::operator=(), neforce::basic_timer< steady_clock >::operator=(), neforce::bit_reference::operator=(), neforce::bit_reference::operator=(), neforce::bitmap::operator=(), neforce::bitmap::operator=(), neforce::cancellation_token::operator=(), neforce::color::operator=(), neforce::deque< T, Alloc, BufSize >::operator=(), neforce::deque< T, Alloc, BufSize >::operator=(), neforce::exception::operator=(), neforce::exception::operator=(), neforce::exception_ptr::operator=(), neforce::exception_ptr::operator=(), neforce::flat_hashtable< pair< Key, T >, Key, HashFcn, select1st< pair< Key, T > >, EqualKey, Alloc >::operator=(), neforce::flat_hashtable< pair< Key, T >, Key, HashFcn, select1st< pair< Key, T > >, EqualKey, Alloc >::operator=(), neforce::generator< T >::operator=(), neforce::hashtable< pair< const Key, T >, Key, HashFcn, select1st< pair< const Key, T > >, EqualKey, Alloc >::operator=(), neforce::hashtable< pair< const Key, T >, Key, HashFcn, select1st< pair< const Key, T > >, EqualKey, Alloc >::operator=(), neforce::http::http_content::operator=(), neforce::http::http_cookie_name::operator=(), neforce::http::http_method::operator=(), neforce::list< pair< Key, Value > >::operator=(), neforce::list< pair< Key, Value > >::operator=(), neforce::map< Key, T, Compare, Alloc >::operator=(), neforce::map< Key, T, Compare, Alloc >::operator=(), neforce::optional< T >::operator=(), neforce::optional< T >::operator=(), neforce::optional< T & >::operator=(), neforce::optional< T & >::operator=(), neforce::rb_tree< Key, pair< const Key, T >, select1st< pair< const Key, T > >, Compare, Alloc >::operator=(), neforce::rb_tree< Key, pair< const Key, T >, select1st< pair< const Key, T > >, Compare, Alloc >::operator=(), neforce::retire_list::operator=(), neforce::scope_connection::operator=(), neforce::scope_transaction< Connect >::operator=(), neforce::shared_lock< SharedMutex >::operator=(), neforce::shared_ptr< periodic_task_state >::operator=(), neforce::shared_ptr< periodic_task_state >::operator=(), neforce::sparse_map< Key, T, Compare, Alloc >::operator=(), neforce::sparse_map< Key, T, Compare, Alloc >::operator=(), neforce::sparse_vector< Key, pair< Key, T >, select1st< pair< Key, T > >, Compare, Alloc >::operator=(), neforce::sparse_vector< Key, pair< Key, T >, select1st< pair< Key, T > >, Compare, Alloc >::operator=(), neforce::task< T >::operator=(), neforce::trace_allocator< U >::operator=(), neforce::unique_lock< Mutex >::operator=(), neforce::variant< none_t, ::sockaddr_in, ::sockaddr_in6 >::operator=(), neforce::variant< none_t, ::sockaddr_in, ::sockaddr_in6 >::operator=(), neforce::vector< Value, Alloc >::operator=(), neforce::vector< Value, Alloc >::operator=(), neforce::virtual_thread_task< T >::operator=(), neforce::virtual_thread_task< void >::operator=(), neforce::weak_ptr< T >::operator=(), neforce::weak_ptr< T >::operator=(), neforce::optional< T & >::optional(), neforce::optional< T & >::optional(), neforce::pointer_traits< T * >::pointer_to(), neforce::reference_wrapper< T >::reference_wrapper(), neforce::atomic< T >::store(), neforce::atomic< T >::store(), neforce::basic_string< char >::swap(), neforce::bit_reference::swap(), neforce::bitmap::swap(), neforce::deque< T, Alloc, BufSize >::swap(), neforce::flat_hashtable< pair< Key, T >, Key, HashFcn, select1st< pair< Key, T > >, EqualKey, Alloc >::swap(), neforce::hashtable< pair< const Key, T >, Key, HashFcn, select1st< pair< const Key, T > >, EqualKey, Alloc >::swap(), neforce::optional< T >::swap(), neforce::shared_ptr< periodic_task_state >::swap(), neforce::variant< none_t, ::sockaddr_in, ::sockaddr_in6 >::swap(), neforce::vector< Value, Alloc >::swap() , 以及 neforce::weak_ptr< T >::swap().

◆ forward() [1/2]

template<typename T>
T && neforce::forward ( remove_reference_t< T > && x)
nodiscardconstexprnoexcept

完美转发右值

模板参数
T目标类型
参数
x要转发的右值
返回
转发后的引用
注解
如果T是左值引用类型,触发静态断言

用于实现完美转发,保持值的类别

在文件 type_traits.hpp3042 行定义.

引用了 forward() , 以及 neforce::integral_constant< bool, Value >< false >::value.

◆ forward() [2/2]

template<typename T>
T && neforce::forward ( remove_reference_t< T > & x)
nodiscardconstexprnoexcept

完美转发左值

模板参数
T目标类型
参数
x要转发的左值
返回
转发后的引用

用于实现完美转发,保持值的类别

在文件 type_traits.hpp3028 行定义.

引用了 forward().

被这些函数引用 allocate_shared(), neforce::optional< T >::and_then(), neforce::optional< T >::and_then(), neforce::optional< T >::and_then(), neforce::optional< T >::and_then(), neforce::optional< T & >::and_then(), neforce::optional< T & >::and_then(), neforce::optional< T & >::and_then(), neforce::optional< T & >::and_then(), neforce::any::any(), neforce::any::any(), apply(), neforce::cancellation_slot::assign(), async(), async(), neforce::tcp_acceptor::async_accept(), neforce::tcp_socket::async_connect(), neforce::ssl_stream::async_handshake(), neforce::dns_client::async_query(), neforce::async_stream::async_read(), neforce::tcp_socket::async_receive(), neforce::udp_socket::async_receive_from(), neforce::tcp_socket::async_send(), neforce::udp_socket::async_send_to(), neforce::basic_timer< steady_clock >::async_wait(), neforce::async_stream::async_write(), neforce::virtual_thread_task< T >::promise_type::await_transform(), neforce::virtual_thread_task< void >::promise_type::await_transform(), bind(), bind_front(), neforce::binder< Func(BoundArgs...)>::binder(), neforce::binder_front< decay_t< Func >, decay_t< Args >... >::binder_front(), neforce::bindrer< Res, Func(BoundArgs...)>::bindrer(), neforce::once_flag::call_once, neforce::call_wrapper< Types >::call_wrapper(), neforce::compressed_pair< IfEmpty, T, Compressed >::compressed_pair(), neforce::compressed_pair< IfEmpty, T, Compressed >::compressed_pair(), neforce::compressed_pair< IfEmpty, T, false >::compressed_pair(), neforce::compressed_pair< IfEmpty, T, false >::compressed_pair(), concatenate(), neforce::allocator_traits< rebind_alloc< T > >::construct(), construct(), neforce::signal< T >::emit_executor(), neforce::any::emplace(), neforce::any::emplace(), neforce::deque< T, Alloc, BufSize >::emplace(), neforce::flat_unordered_map< Key, T, HashFcn, EqualKey, Alloc >::emplace(), neforce::flat_unordered_multimap< Key, T, HashFcn, EqualKey, Alloc >::emplace(), neforce::flat_unordered_multiset< Value, HashFcn, EqualKey, Alloc >::emplace(), neforce::flat_unordered_set< Value, HashFcn, EqualKey, Alloc >::emplace(), neforce::list< pair< Key, Value > >::emplace(), neforce::map< Key, T, Compare, Alloc >::emplace(), neforce::multimap< Key, T, Compare, Alloc >::emplace(), neforce::multiset< Key, Compare, Alloc >::emplace(), neforce::optional< T >::emplace(), neforce::optional< T >::emplace(), neforce::priority_queue< T, Sequence, Compare >::emplace(), neforce::queue< T, Sequence >::emplace(), neforce::set< Key, Compare, Alloc >::emplace(), neforce::sparse_map< Key, T, Compare, Alloc >::emplace(), neforce::sparse_multimap< Key, T, Compare, Alloc >::emplace(), neforce::sparse_multiset< Key, Compare, Alloc >::emplace(), neforce::sparse_set< Key, Compare, Alloc >::emplace(), neforce::stack< T, Sequence >::emplace(), neforce::unordered_map< string, any >::emplace(), neforce::unordered_multimap< Key, T, HashFcn, EqualKey, Alloc >::emplace(), neforce::unordered_multiset< Value, HashFcn, EqualKey, Alloc >::emplace(), neforce::unordered_set< Value, HashFcn, EqualKey, Alloc >::emplace(), neforce::variant< none_t, ::sockaddr_in, ::sockaddr_in6 >::emplace(), neforce::variant< none_t, ::sockaddr_in, ::sockaddr_in6 >::emplace(), neforce::vector< Value, Alloc >::emplace(), neforce::deque< T, Alloc, BufSize >::emplace_back(), neforce::list< pair< Key, Value > >::emplace_back(), neforce::vector< Value, Alloc >::emplace_back(), neforce::flat_hashtable< pair< Key, T >, Key, HashFcn, select1st< pair< Key, T > >, EqualKey, Alloc >::emplace_equal(), neforce::hashtable< pair< const Key, T >, Key, HashFcn, select1st< pair< const Key, T > >, EqualKey, Alloc >::emplace_equal(), neforce::rb_tree< Key, pair< const Key, T >, select1st< pair< const Key, T > >, Compare, Alloc >::emplace_equal(), neforce::sparse_vector< Key, pair< Key, T >, select1st< pair< Key, T > >, Compare, Alloc >::emplace_equal(), neforce::rb_tree< Key, pair< const Key, T >, select1st< pair< const Key, T > >, Compare, Alloc >::emplace_equal_hint(), neforce::sparse_vector< Key, pair< Key, T >, select1st< pair< Key, T > >, Compare, Alloc >::emplace_equal_hint(), neforce::deque< T, Alloc, BufSize >::emplace_front(), neforce::list< pair< Key, Value > >::emplace_front(), neforce::map< Key, T, Compare, Alloc >::emplace_hint(), neforce::multimap< Key, T, Compare, Alloc >::emplace_hint(), neforce::multiset< Key, Compare, Alloc >::emplace_hint(), neforce::set< Key, Compare, Alloc >::emplace_hint(), neforce::sparse_map< Key, T, Compare, Alloc >::emplace_hint(), neforce::sparse_multimap< Key, T, Compare, Alloc >::emplace_hint(), neforce::sparse_multiset< Key, Compare, Alloc >::emplace_hint(), neforce::sparse_set< Key, Compare, Alloc >::emplace_hint(), neforce::flat_hashtable< pair< Key, T >, Key, HashFcn, select1st< pair< Key, T > >, EqualKey, Alloc >::emplace_unique(), neforce::hashtable< pair< const Key, T >, Key, HashFcn, select1st< pair< const Key, T > >, EqualKey, Alloc >::emplace_unique(), neforce::rb_tree< Key, pair< const Key, T >, select1st< pair< const Key, T > >, Compare, Alloc >::emplace_unique(), neforce::sparse_vector< Key, pair< Key, T >, select1st< pair< Key, T > >, Compare, Alloc >::emplace_unique(), neforce::rb_tree< Key, pair< const Key, T >, select1st< pair< const Key, T > >, Compare, Alloc >::emplace_unique_hint(), neforce::sparse_vector< Key, pair< Key, T >, select1st< pair< Key, T > >, Compare, Alloc >::emplace_unique_hint(), eprint(), neforce::sys_console::eprint(), eprintf(), neforce::sys_console::eprintf(), eprintfln(), neforce::sys_console::eprintfln(), eprintln(), neforce::sys_console::eprintln(), neforce::pair< Key, T >::explicit(), neforce::pair< Key, T >::explicit(), neforce::tuple< This, Rest... >::explicit(), neforce::generator< T >::fold(), neforce::generator< T >::for_each(), format(), format(), format(), forward(), forward(), forward_as_tuple(), neforce::function< Res(Args...)>::function(), get(), get(), get_current_task_group(), neforce::unordered_map< string, any >::insert(), neforce::unordered_set< Value, HashFcn, EqualKey, Alloc >::insert(), invoke(), invoke_r(), neforce::lazy_thread::lazy_thread(), neforce::list_node< value_type >::list_node(), make_any(), neforce::exception_ptr::make_exception_ptr, make_from_tuple(), make_optional(), make_optional(), make_pair(), neforce::packaged_task< Res(Args...)>::make_ready_at_thread_exit(), make_shared(), make_tuple(), make_unique(), neforce::binder< Func(BoundArgs...)>::operator()(), neforce::binder< Func(BoundArgs...)>::operator()(), neforce::binder_front< decay_t< Func >, decay_t< Args >... >::operator()(), neforce::binder_front< decay_t< Func >, decay_t< Args >... >::operator()(), neforce::binder_front< decay_t< Func >, decay_t< Args >... >::operator()(), neforce::binder_front< decay_t< Func >, decay_t< Args >... >::operator()(), neforce::bindrer< Res, Func(BoundArgs...)>::operator()(), neforce::bindrer< Res, Func(BoundArgs...)>::operator()(), neforce::function< Res(Args...)>::operator()(), neforce::packaged_task< Res(Args...)>::operator()(), neforce::reference_wrapper< T >::operator()(), neforce::signal< T >::operator()(), neforce::any::operator=(), neforce::function< Res(Args...)>::operator=(), neforce::optional< T >::operator=(), neforce::pair< Key, T >::operator=(), neforce::pair< Key, T >::operator=(), neforce::tuple< This, Rest... >::operator=(), neforce::tuple< This, Rest... >::operator=(), neforce::tuple< This, Rest... >::operator=(), neforce::unique_ptr< T[], Deleter >::operator=(), neforce::unique_ptr<::X509, x509_deleter >::operator=(), neforce::optional< T >::optional(), neforce::optional< T >::optional(), neforce::optional< T >::optional(), neforce::optional< T >::or_else(), neforce::optional< T >::or_else(), neforce::optional< T & >::or_else(), neforce::optional< T & >::or_else(), neforce::packaged_task< Res(Args...)>::packaged_task(), print(), neforce::sys_console::print(), printc(), neforce::sys_console::printc(), printcf(), neforce::sys_console::printcf(), printcfln(), neforce::sys_console::printcfln(), printcln(), neforce::sys_console::printcln(), printf(), neforce::sys_console::printf(), printfln(), neforce::sys_console::printfln(), println(), neforce::sys_console::println(), neforce::list< pair< Key, Value > >::push_back(), neforce::list< pair< Key, Value > >::push_front(), neforce::scope_exit< Func >::scope_exit(), neforce::scope_fail< Func >::scope_fail(), neforce::scope_success< Func >::scope_success(), neforce::scope_thread::scope_thread(), neforce::reflect::meta_property::set(), neforce::promise< Res >::set_value(), neforce::promise< Res >::set_value_at_thread_exit(), neforce::shared_ptr< periodic_task_state >::shared_ptr(), neforce::thread::start(), neforce::virtual_thread::start(), neforce::stop_callback< Callback >::stop_callback(), neforce::stop_callback< Callback >::stop_callback(), neforce::thread_pool::submit_after(), neforce::thread_pool::submit_every(), neforce::thread_pool::submit_task(), neforce::thread::thread(), neforce::optional< T >::transform(), neforce::optional< T >::transform(), neforce::optional< T >::transform(), neforce::optional< T >::transform(), neforce::optional< T & >::transform(), neforce::optional< T & >::transform(), neforce::optional< T & >::transform(), neforce::optional< T & >::transform(), neforce::tuple< This, Rest... >::tuple(), neforce::tuple< This, Rest... >::tuple(), tuple_cat(), neforce::unique_ptr< T[], Deleter >::unique_ptr(), neforce::unique_ptr<::X509, x509_deleter >::unique_ptr(), neforce::unique_ptr<::X509, x509_deleter >::unique_ptr(), neforce::optional< T & >::value_or(), neforce::optional< T & >::value_or(), neforce::variant< none_t, ::sockaddr_in, ::sockaddr_in6 >::variant(), neforce::variant< none_t, ::sockaddr_in, ::sockaddr_in6 >::variant(), neforce::variant< none_t, ::sockaddr_in, ::sockaddr_in6 >::variant(), neforce::variant< none_t, ::sockaddr_in, ::sockaddr_in6 >::variant(), neforce::variant< none_t, ::sockaddr_in, ::sockaddr_in6 >::visit(), neforce::variant< none_t, ::sockaddr_in, ::sockaddr_in6 >::visit() , 以及 neforce::tui::application::with_component().

◆ move()

template<typename T>
remove_reference_t< T > && neforce::move ( T && x)
nodiscardconstexprnoexcept

无条件转换为右值引用

模板参数
T参数类型
参数
x要转换的值
返回
转换后的右值引用

用于实现移动语义

在文件 type_traits.hpp3056 行定义.

引用了 move().

◆ move_if_noexcept()

template<typename T>
conditional_t<!is_nothrow_move_constructible< T >::value &&is_copy_constructible< T >::value, const T &, T && > neforce::move_if_noexcept ( T & x)
nodiscardconstexprnoexcept

在安全的情况下执行移动操作

模板参数
T参数类型
参数
x要移动的值
返回
如果可以安全移动则返回右值引用,否则返回const左值引用

如果类型不可无异常移动构造但可复制构造,则返回const引用以避免潜在异常

在文件 type_traits.hpp3071 行定义.

引用了 move() , 以及 move_if_noexcept().

被这些函数引用 move_if_noexcept().