I am wondering about this because of scope issues. For example, consider the code
typedef struct { int x1;/*top*/ int x2;/*bottom*/ int id; } sub
In your case , it will return a copy
If your code was
subline_t& subline(int, int)
then it would return a reference, which would yield in undefined behaviour.