Walton1128/CPP-Templates-2nd--

P157-std::invoke

Closed this issue · 2 comments

image

这里这样翻译可能会有读者难以理解。之所以不能用万能引用+完美转发,是因为函数体内对op调用了多次(是个while循环,迭代iterator),第一次执行后一旦使用了移动语义会对后续的调用产生副作用(即steal),也就是原文所说的subsequent iterations。

image
另外原文说的是this object,实际上std::invoke对于类成员函数来说,指针和对象都是支持的,可以参考cppreference
image

感谢,已修改:如果可调用对象是一个指向成员函数的指针,它会将args...中的第一个参数当作this对象(不是指针)。。之前一直在类比std::thread,以为这里的成员函数会像std::thread一样传递一个指针