I wrote:
> [Discussion about \IfNoValue]

I think there are two sensible ways to approach things:

1) Insist that \NoValue can only be used directly inside xparse
functions, document this and provide an example of how to pass data
along (using \q_no_value, as in my example). In this case, \IfNoValue
does not need to be expandable.

2) Document that \NoValue may be passed along, and as a result ensure
that \IfNoValue is expandable.

The current situation seems to fall between the two (\IfNoValue is not
expandable *but* there is no guidance on any restriction).  As Lars
says, there are cases where an expandable \NoValue would be very useful
(although I wonder if my suggestion of effectively converting \NoValue
into \q_no_value at the xparse stage "fits" better the separation of
argument parsing from coding).
-- 
Joseph Wright