【发布时间】:2012-01-03 01:29:05
【问题描述】:
我正在阅读 boost-proto 教程,并在惰性 pow 函数示例中遇到了这个问题。这是示例代码:
// Define a pow_fun function object
template<int Exp> // , typename Func>
struct pow_fun
{
typedef double result_type;
double operator()(double d) const
{
return pow(d, Exp);
}
};
// Define a lazy pow() function for the calculator DSEL.
// Can be used as: pow< 2 >(_1)
template<int Exp, typename Arg>
typename proto::result_of::make_expr<
proto::tag::function // Tag type
, pow_fun<Exp> // First child (by value)
, Arg const & // Second child (by reference)
>::type const
mypow(Arg const &arg)
{
return proto::make_expr<proto::tag::function>(
pow_fun<Exp>() // First child (by value)
, boost::ref(arg) // Second child (by reference)
);
}
现在,如果我尝试
proto::display_expr( mypow<2>(_1) );
编译器抱怨它没有 operator
谢谢。
编译错误是:
/usr/include/boost/proto/debug.hpp:146: 错误:'std::operator&)((std::basic_ostream >*)std::operator&)((std::basic_ostream >*)std: :operator&)((std::basic_ostream >*)std::operator&)((std::ostream*)((const boost::proto::functional::display_expr*)this)->boost::proto::functional::display_expr:: sout_)), std::setw(((const boost::proto::functional::display_expr*)this)->boost::proto::functional::display_expr::depth_)))), (((const boost::proto::functional::display_expr*)this)->boost::proto::functional::display_expr::first_ ? ((const char*)"") : ((const char*)", ") )))), boost::proto::tag::proto_tag_name((boost::proto::tag::terminal(), boost::proto::tag::terminal()))))), (( const char*)"(")) , 0l>](((const boost::proto::exprns_::expr >, 0l>&)((const boost::proto::exprns_::expr >, 0l>*)expr)))'
【问题讨论】:
标签: c++ boost boost-proto