pragma experimental ABIEncoderV2; contract C { struct S { uint a; function() external returns (S memory) sub; } function f() public pure returns (S memory) { } } // ----