Why CPP does not allow the use of parentheses to initialize within a class

some people say it in order to avoid ambiguity.
for example:

class Widget 
{
private: 
  typedef int x;
  int z(x);
};

this becomes the function declaration.
however, you can also write

outside the class.
typedef int x;
int z(x);

I don"t think avoiding ambiguity is the reason. After that, someone said that direct initialization is not allowed in the class, so list initialization does not belong to direct initialization?
what is the reason why parentheses initialization is not allowed in the class? Page 65 of the fifth edition of CPP primer only says "remember", but does not say why

CPP
Jun.09,2021

Why do you duang immediately feel that "avoiding ambiguity is not the reason for it"?

Most Vexing Parse, what do you want to know? If you want to initialize with parentheses, you will inevitably face failure. List initialization is not introduced to overcome these problems.

MySQL Query : SELECT * FROM `codeshelper`.`v9_news` WHERE status=99 AND catid='6' ORDER BY rand() LIMIT 5
MySQL Error : Disk full (/tmp/#sql-temptable-64f5-1e5c8ea-456d3.MAI); waiting for someone to free some space... (errno: 28 "No space left on device")
MySQL Errno : 1021
Message : Disk full (/tmp/#sql-temptable-64f5-1e5c8ea-456d3.MAI); waiting for someone to free some space... (errno: 28 "No space left on device")
Need Help?