“if话语中的条件表达式可以是任何算术表达式”中的算术表达式指的是基本类型组成的表达式么

“if语句中的条件表达式可以是任何算术表达式”中的算术表达式指的是基本类型组成的表达式么?
本帖最后由 shendaowu 于 2013-07-03 19:09:18 编辑
书上的原话:
这也意味着任何算术或者指针表达式都可以用做条件。
还是说算术表达式本来就是应该由基本类型组成的?

但是我写的这段代码报错了:
#include <iostream>

using namespace std;

class cond
{
    int i;
public:
    cond( int );
    cond& operator +=( cond a ) //顺便问一下这个怎么像构造函数一样定义到类定义的外面。
    {
        i += a.i;
        return *this;
    }
};
cond::cond( int a )
{
    i = a;
}

cond operator +( cond a, cond b )
{
    cond c = a;
    return c += b;
}

int main()
{
   cond test1( 3 );
   cond test2( 4 );
   
   if( test1 + test2 ); //这里报错。
   
   return 0;
}


我知道这个应该定义"operator bool();"。我只是想知道那句话中的算术表达式具体指什么。

------解决方案--------------------
标准中的说法是if的条件不管是单纯的表达式还是变量声明,只要值能转换为bool就可以
不管是不是什么算术,指针,自定义类型
------解决方案--------------------
先看这里,http://msdn.microsoft.com/en-us/library/fh88ctk1.aspx,这里是if Statement的定义。

再看这里,http://msdn.microsoft.com/en-us/library/40b07dd5.aspx,这是expression的定义。