>>It's too compact to be readable.
>Then the reader doesn't know C language very well, probably a newbe. Looks perfectly ok to me.
>>The tricks used are obscure.
>What tricks? And how are they obscure.
>>The mechanics are too subtle (notably, dealing with '\0').
>Not subtle at all if you realize what that loop is doing.
Okay, let's break it down by difficult concepts. Here's the original code, to save scrolling:
while( *outstr++ = *instr++);
1) You have to know the precedence/associativity of * and ++. This is a notoriously good area to screw up, even for experienced C programmers (to the point where ++ is often banned in complex expressions).
2) You have to know the implicit test made by a loop, and that it correctly checks for the end of a string. Experienced programmers usually have to think about this to get it right. I'm one of them, which is why my style calls for explicit tests except for exact boolean comparisons.
3) You have to know that because the condition is also an assignment, the null character is correctly added to the string without further logic.
4) You have to parse the entire line before realizing that the null body is intended rather than a grievous error.
That's a lot of prerequisite (not to mention intimate) knowledge for understanding such a simple operation.
>slower than what?
Other solutions that vary depending on the compiler and optimization settings.

My wording was poor though, I should have said "The performance is deceptive (it could easily be slower)."