#include <iostream>
#include <string>
#include <boost/bind.hpp>
void foo(std::string const& dummy)
{
std::cout << "Yo: " << dummy << std::endl;
}
int main()
{
int* test;
std::string bar("platypus");
(boost::bind(&foo, bar))(test, test, test, test, test, test, test, test);
}
Khi chạy, nó in ra, "Yo: thú mỏ vịt". Dường như hoàn toàn bỏ qua các tham số bổ sung. Tôi mong đợi để có được một lỗi biên dịch. Tôi vô tình giới thiệu một lỗi vào mã của tôi theo cách này.Tại sao chức năng Boost.Bind có thể được gọi với các tham số phụ?
Tôi vẫn muốn biết lý do tại sao để cho phép hành vi này nếu có ai đó phát hiện ra :) –
@Joseph: Rất có thể quá phức tạp để không cho phép nó một cách rõ ràng. –