Meh*_*dad 6 c++ lambda boost visual-c++ boost-phoenix
我一直认为Boost.Phoenix使用类型推断来静态推断所有内容,直到我尝试这段代码:
#include <vector>
#include <boost/phoenix/phoenix.hpp>
using namespace boost::phoenix;
using namespace boost::phoenix::placeholders;
struct Foo { int x; };
int main()
{
std::vector<int> bar;
bind(&Foo::x, ref(bar)[_1])("invalid index"); // oops
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并得到警告:
警告C4239:使用非标准扩展:"参数":转换从
const char [3]到volatile const boost::proto::detail::anyns::any &
非const引用可以仅被绑定到一个左值
这让我感到惊讶.我没想到会看到any任何地方,更不用说了volatile!
这是否意味着Boost.Phoenix实际上本质上比其等效的C++ 11 lambdas慢(忽略我在这里使用的特定编译器)?