c++明显调用的表达式前的括号必须具有(指针)函数类型

为什么会在cout那行出现错误:“明显调用的表达式前的括号必须具有(指针)函数类型”?解答一下吧,thanks

#include<iostream>
using namespace std;
int main()
{
    typedef pair<int, int>p;
    p* pai = new p;
    *pai = p(1, 2);
    cout << (*(pai)).first();
}

参考(把first()的括号去掉,直接写first):

#include<iostream>
using namespace std;
int main()
{
    typedef pair<int, int>p;
    p* pai = new p;
    *pai = p(1, 2);
    std::cout << (*(pai)).first;
}

img