2
在表達時編譯錯誤與模板與海灣合作委員會建立,但不是MSVC
error: ‘rdoRuntime::RDOValue::operator-’ cannot appear in a constant-expression
error: ‘&’ cannot appear in a constant-expression
error: template argument 2 is invalid
error: invalid type in declaration before ‘;’ token
在Windows MSVC的編譯器編譯沒有錯誤的代碼。
有什麼問題?我該如何解決?
template <typename ret_type, ret_type (RDOValue::*pOperator)() const, typename OperatorType::Type CalcType>
class RDOCalcUnary: public RDOCalcUnaryBase
{
friend class rdo::Factory<RDOCalcUnary<ret_type, pOperator, CalcType> >;
public:
enum { calc_type = CalcType };
typedef ret_type (RDOValue::*value_operator)() const;
static RDOSrcInfo getStaticSrcInfo(CREF(RDOSrcInfo::Position) position, CREF(LPRDOCalc) pUnaryCalc);
static value_operator getOperation ();
protected:
RDOCalcUnary(CREF(RDOSrcInfo::Position) position, CREF(LPRDOCalc) pOperation);
private:
REF(RDOValue) doCalc(CREF(LPRDORuntime) pRuntime);
};
你能否爲我們粘貼RDOCalcUnary的定義,所以我們知道模板參數應該是什麼?這段代碼對我來說看起來完全沒有意義... – mergeconflict
如果刪除括號會發生什麼?他們不應該被需要,據我所知 –
我刪除了括號,編譯器不再給出錯誤...讓我們看看當我收集整個應用程序時會發生什麼。謝謝。 –