Sort of. PostgreSQL has a wart around (x).* expansion where it's essentially macro-expanded into
(x).a, (x).b, (x).c, ...
Now, if x is a function call, PG will merrily execute it n times for its n output columns.
Andres is working on fixing this. And it's trivially worked around with a lateral query ; the above would be better written as
select (x).*
from mytable
cross join lateral json_populate_record(null::mytype, myjson) as x;
So this example just abuses our optimiser hint behaviour for CTEs to avoid solving a planner issue (why project policy is against hints). But there's already a solution.
I'm finding it increasingly hilarious watching people vociferously defending their one precious (semi-documented) query/optimiser hint in PostgreSQL. The one we don't admit is a hint, but treat as one by avoiding optimising across it when it's safe to do so.