Is the following program ill-formed according to the C++14 standard?
No. If you have some specific reason for thinking this might be invalid, you might be able to get a more detailed answer, but quoting each and every sentence of the standard in an attempt to point out that that sentence doesn't render the program invalid is not productive.
If not, is the sole function call expression contained within a discard-value expression?
The sole function call expression is the discarded-value expression.
5.2.9 Static cast [expr.static.cast]
6 Any expression can be explicitly converted to type cv void
, in which case it becomes a discarded-value expression (Clause 5). [...]
I am assuming you are already aware that a C-style cast performs a static_cast
if possible.