我以为bind_front会完美转发,但它似乎复制了。我在这里错过了什么:
class CustomObject {
public:
// Constructor
CustomObject(int value) : value(value) {
std::cout << "Constructor: " << value << std::endl;
}
// Copy Constructor
CustomObject(const CustomObject& other) : value(other.value) {
//this is called
std::cout << "Copy Constructor: " << value << std::endl;
}
private:
int value;
};
void func(const CustomObject& a, int b, int c) {
std::cout << ", " << b << ", " << c << std::endl;
}
int main() {
CustomObject A{ 5 };
auto boundFunc = std::bind_front(func, A, 2, 2);
boundFunc();
return 0;
}
字符串
我认为它将perfec转发到func,而不是移动/复制
1条答案
按热度按时间jgovgodb1#
根据documentation
std::bind_front
或std::bind_back
的参数会被复制或移动,并且永远不会通过引用传递,除非 Package 在std::ref
或std::cref
中。在你的例子中,这是完美的:
字符串