I am not quite sure what you want to achieve, however
if(Gate(Validate()))
This constructs a Gate object with default value obtained by calling Validate(), then it evaluates Gate by operator bool (which results in the value returned by Validate) and then destructs the Gate instance.