
Hi Johan, Johan Nilsson <r.johan.nilsson@gmail.com> wrote:
"Should" is a strong word, IMHO.
"Should" based on the guidelines discussed in this thread: http://lists.boost.org/Archives/boost/2006/02/101041.php
I find the usage of error_code as a parameter to methods pollutes the domain interfaces and make them more complex. I'd probably prefer a TSS-based solution.
I have a strong opinion that a TSS-based solution is error prone, since any function call can modify the TSS value as a side effect. I have seen the following sort of incorrect code many times: if (!SomeWindowsAPICall()) { printf( "Error (%u): %s\n", GetLastError(), SomeOtherFunction()); } You might not find out that it's giving you the wrong error value until an obscure failure occurs at a customer site, and by that time it's too late :)
That's a big if. If we had this facility, I could use it and you could still not use it. You, as a user, don't need to pay for what you don't need. (Also, you're missing out the modifying wrappers for SetLastError, errno=).
No, I see it as a bad thing to bless a TSS-based solution for error codes in C++ by putting it in a public interface, due to the error prone nature. It's not a "don't pay for what you don't use" issue for me. Cheers, Chris