On Sat, 21 Sep 2013, Andrey Semashev wrote:
On Sat, Sep 21, 2013 at 7:54 PM, Marc Glisse
wrote: On Sat, 21 Sep 2013, Andrey Semashev wrote:
On Sat, Sep 21, 2013 at 3:30 PM, Jonathan Wakely
**wrote: On 21 September 2013 08:31, Andrey Semashev wrote:
Hi,
I was reported an issue with Boost.Log which fails to compile with Sun
Pro
compiler because it has non-compliant standard C headers.
Non-compliant in what way? Solaris headers are usually pretty strict.
Missing std::swprintf/std::vswprintf.
https://svn.boost.org/trac/**boost/ticket/9140https://svn.boost.org/trac/boost/ticket/9140
Well, it is boost that is broken. snprintf is not part of C++03, you can't count on cstdio providing it. And in C++11 (when solaris will support that), cstdio will provide std::snprintf but still not ::snprintf unless Oracle completely changes the way solaris headers are organized.
It's not about snprintf, it's about swprintf and vswprintf, both of which are in C++98 standard.
In namespace std if you include cwchar, and in the global namespace if you include wchar.h. The boost header currently includes cwchar and tries to use ::swprintf, that's just wrong. If that's not what the issue is about, you haven't been very clear in your explanations.
The C++ standard defines a number of headers which define C components. These headers are part of the standard, and if a compiler doesn't implement them right, the compiler is non-compliant. I don't see the other way to put it.
"I am misusing those headers". -- Marc Glisse