为什么std :: bind的返回类型未指定?

时间:2015-04-01 16:04:14

标签: c++ c++11 boost bind

未指定boost::bind和现在std::bind的返回类型。

unspecified bind

What is the return type of boost::bind?

为什么boost::bind和现在std::bind的返回类型未指定?为什么它不像boost::functionstd::function

我意识到目的是通过类型推导来引用返回类型,但这并不能解答为什么std::bind是特殊的。

如果这只是委员会的心血来潮那么好,没有什么可说的,但是有一个技术原因,指定std::bind的返回类型是唯一的负担或没有指定它允许更有效的实施?

2 个答案:

答案 0 :(得分:5)

嗯,对于初学者来说,只有一种回归类型。它的变化很大,具体取决于传入的参数类型。

C ++标准为实施者留下了很大的灵活性,确切地说明了不同的案例如何被分解(使用重载和SFINAE)并映射到不同的闭包对象类型。

答案 1 :(得分:0)

它不是boost :: function或std :: function,因为它们都执行类型擦除,可能需要内存分配(bind不会),并且通常不能内联函数调用。