1

我正在使用 Visual Studio 2005 和 Boost 1.37。我还在 Visual Studio 2012 Express Desktop 和 Boost 1.50 上测试了相同的代码,但没有成功。

我想通过访问我的类型上的自定义下标运算符来使用Boost.Lambda 。与std::array一起使用时也会发生这种情况,因此我将说明std::array类型的问题:

#include <vector>
#include <array>
#include <algorithm>

int main() {
    std::vector<std::array<int, 3>> arrays;
    arrays.push_back(make_array(1, 2, 3));
    arrays.push_back(make_array(5, 5, 6));
    std::for_each(arrays.begin(), arrays.end(), (_1[0])); //This line fails!
    return 0;
}

错误是:

error C2664: 'boost::lambda::detail::unspecified::unspecified(const boost::lambda::detail::unspecified &)' : cannot convert parameter 1 from 'int' to 'const boost::lambda::detail::unspecified &'
      Reason: cannot convert from 'int' to 'const boost::lambda::detail::unspecified'
      No constructor could take the source type, or constructor overload resolution was ambiguous
... ad infinitum...

我找到了这个页面:Extended return type deduction system

但我无法成功实施。

有谁知道在这里可以做什么?

4

0 回答 0