指针对比的结果无法用auto或bool存下来,但可以用于if条件判断,如何解决?

有如下代码:
对比两个指针,编译报错,结果无法用auto或bool存下来,但可以用于if条件判断。


    int a[] = {1,2,4};

    int* p1 = a;
    int* p2 = a + 1;

    auto b = (p2 > p1); // error C2040: 'b': 'auto' differs in levels of indirection from 'int [3]'

    if (p2 > p1) // correct
    {
        // do something
    }

按我理解,指针的对比结果应当也是bool(不管逻辑上是否有意义,这里只讨论语法)。请广大网友帮忙解答,感激不尽。

auto b = (p2 > p1); 这里有点不伦不类,这里只是一个括号(),并不是判断语句,标准的判断是(a>b )?true :false
你将括号() 写在if后面当然不报错,因为那就是判断语句。

试了下上面的代码,没发现题主讲的问题。