我剛剛與boost::bind
和boost::function
一起工作,並注意到以下行爲(我認爲這有點奇怪)。您可以使用比boost :: function類型所需的參數更少的參數來綁定一個函數!看起來似乎任何附加的參數都被忽略,並且會消失。這爲什麼有效?
那麼爲什麼這種行爲是正確的?我的期望是應該提出編譯錯誤,說明不兼容性。
請參閱以下工作代碼示例,說明問題
#include "boost/bind.hpp"
#include "boost/function.hpp"
namespace
{
int binder(const char& testChar,
const int& testInt,
const std::string& testString)
{
return 3;
}
}
int main(int c, char** argv)
{
boost::function<int(const char&,
const int&,
const std::string&,
const float&,
const std::string&,
const int&)> test;
test = boost::bind(&::binder, _1, _2, _3);
std::cout << test('c', 1, "something", 1.f, "more", 10) << std::endl;
}
我不確定這是否是「正常」,但我想是的。 'Qt'信號和插槽也可以。 – ereOn 2010-06-21 07:18:21