In clang's ActOnIfStmt function, we have:
return Owned(new (Context) IfStmt(Context, IfLoc, ConditionVar, ConditionExpr,
    thenStmt, ElseLoc, elseStmt));
I'm under the impression that Context is a pointer type, but it's a class type. How does this work, and what does this code do?
 
    