未指定boost::bind
和现在std::bind
的返回类型。
What is the return type of boost::bind?
为什么boost::bind
和现在std::bind
的返回类型未指定?为什么它不像boost::function
和std::function
?
我意识到目的是通过类型推导来引用返回类型,但这并不能解答为什么std::bind
是特殊的。
如果这只是委员会的心血来潮那么好,没有什么可说的,但是有一个技术原因,指定std::bind
的返回类型是唯一的负担或没有指定它允许更有效的实施?
答案 0 :(得分:5)
嗯,对于初学者来说,只有一种回归类型。它的变化很大,具体取决于传入的参数类型。
C ++标准为实施者留下了很大的灵活性,确切地说明了不同的案例如何被分解(使用重载和SFINAE)并映射到不同的闭包对象类型。
答案 1 :(得分:0)
它不是boost :: function或std :: function,因为它们都执行类型擦除,可能需要内存分配(bind不会),并且通常不能内联函数调用。