std::
function::assign
公共成员函数 <functional>
template <class Fn, class Alloc>
void assign (Fn&& fn, const Alloc& alloc);
|
赋值目标并分配空间
将一个新值赋给函数对象,替换它的当前target,并将alloc设置为内部分配器。
该函数的行为就像在堆栈上构造了一个新函数,通过转发fn和alloc给正确的构造函数,并使用*this交换新构造的对象:
function(allocator_arg,alloc,std::forward<Fn>(fn)).swap(*this)
|
☲ 参数
-
fn
-
相同类型的function对象,或某些函数、函数指针、指向成员的指针或函数对象,转发给函数的构造函数。
☉ 返回值
none
⇄ 数据竞争
对象被修改(包括它的target和分配器)。
如果fn是一个右值引用,函数可以修改fn。
☂ 异常安全性
如果fn是一个函数指针或指向可调用对象的reference_wrapper(或指向其中一个对象的函数对象),
它永远不会抛出异常(no-throw保证)
否则,它只能在目标可调用对象的复制构造或移动构造引发时抛出,或者在分配内存时抛出异常(如bad_alloc)时抛出。
🍄 另请参阅