ben basit güç ifade (daha büyük bir ayrıştırıcı minimal örnek) ayrıştırır Boost Ruh kullanarak matematiksel bir ifade ayrıştırıcı yazdı GCC 4.8.4 ve Clang 3.9, ancak Intel derleyici (sürüm 12.1.6) kullanarak derleme yaparken büyük bir derleme hatası verir. derleyici çıkışın ilgili kısmıBoost :: Ruh ve Intel derleyici derleme hatası
/user/home/gent/vsc408/vsc40826/boost_1_60_0/build/include/boost/utility/result_of.hpp(189): error: too few arguments for class template "power_::result"
struct result_of_nested_result : F::template result<FArgs>
Bu http://www.boost.org/doc/libs/1_56_0/libs/utility/utility.htm#result_of tarafından belirtildiği gibi, boost :: result_of ve C++ 11 ile ilgili bir sorun işaret gibi görünüyor olduğunu. Ben struct power_
tanımını değiştirmek Ancak,: derleme daha sonra ilk ruhu dahil başarısız olarak,
#define BOOST_RESULT_OF_USE_DECLTYPE
ekleme
/user/home/gent/vsc408/vsc40826/boost_1_60_0/build/include/boost/phoenix/core/detail/preprocessed/function_eval_10.hpp(135): error: initial value of reference to non-const must be an lvalue
return boost::phoenix::eval(f, ctx)(help_rvalue_deduction(boost::phoenix::eval(a0, ctx)) , help_rvalue_deduction(boost::phoenix::eval(a1, ctx)));
ya da yardımcı olmuyor içerir:
struct power_ {
template <class> struct result;
template <class F, typename X, typename Y>
struct result < F(X, Y) > {
typedef X type;
};
template <typename X, typename Y> X operator()(X x, Y y) const {
return std::pow(x, y);
}
};
Hala hata alıyorum .
Bu sorunu nasıl çözeceğini bilen var mı?
Sorun, yalnızca Boost sürümleri 1.56'dan daha büyük olan durumlarda ortaya çıkar. –