2012-09-02 29 views
5

Tôi nghĩ câu trả lời cho điều này là không, nhưng tôi chỉ muốn chắc chắn.Can intermixing std :: 's và tăng :: :: ràng buộc và :: chức năng gây ra vấn đề?

Nếu tôi có thông số std::function là một tham số trong một hàm, có vấn đề gì khi chuyển vào một số boost::bind và ngược lại không?

chỉnh sửa:

tôi phát hiện ra rằng placeholders được sử dụng bởi tăng :: ràng buộc được nhập khẩu trực tiếp vào không gian tên khi bạn bao gồm thúc đẩy \ bind.h, và họ không phù hợp với std :: ràng buộc. Đối với std :: bind bạn phải tham khảo phần giữ chỗ rõ ràng, như vậy: std :: placeholders :: _ 1, hoặc thực hiện một số typedef khác hoặc sử dụng phép thuật để làm cho chúng có sẵn đồng thời.

+0

Bạn có thể muốn biết biểu thức ràng buộc lồng nhau là gì và kiểm tra xem các thư viện khác nhau tương tác với nhau như thế nào trong khía cạnh đó. –

Trả lời

10

số Toàn bộ mục đích của std:: (và boost::) function là họ có thể chấp nhận bất kỳ đối tượng chức năng mà có thể được gọi với signature- đúng bao gồm lambdas, functors, và kết quả của bất kỳ loại ràng buộc. Họ không quan tâm đối tượng chức năng của bạn đến từ đâu hoặc loại đó là gì.

Bạn thậm chí có thể liên kết chúng với nhau, mặc dù tôi không thực sự chắc chắn lý do tại sao bạn muốn.

+1

Cảm ơn bạn đã xác minh điều đó đối với tôi. Tôi đã phát hiện ra rằng tăng nhập khẩu placeholders của nó vào không gian tên mà xung đột với std :: giữ chỗ của bind, vì vậy bạn phải đặt tên rõ ràng std's placeholders sử dụng std :: placeholders :: _ 1 – cwm9

Các vấn đề liên quan