Item 4 of Effective Modern C++ is "Know how to view deduced types." It's part of Chapter 1 ("Deducing Types"), which is available for free download here. In the draft of that Item published in July 2014, I discussed how the compiler-dependent constructs
Either way, I hope you find the information on
Scott
__PRETTY_FUNCTION__
and __FUNCSIG__
could be used to produce printable representations of types deduced for and used in template functions. By the time I published the next draft of the Item about six weeks later, __PRETTY_FUNCTION__
and __FUNCSIG__
had disappeared. In a comment on my blog post announcing the existence of the new draft, Benoit M wrote:I noticed that the paragraph named “beyond typeid” has disappeared in this version. It was aboutI replied:__PRETTY_FUNCTION__
,__FUNCSIG__
and other implementation-specific ways to know the types of the variables involved.
I thought it was very interesting. I suppose that you removed it because it was not about C++11 or C++14 new language features, so it is out of scope for a book called “… Modern C++”, and also because compiler extra features are by essence not portable and could even be removed in the future, so it could be a bad habit to rely on those.
Nevertheless I would appreciate if you restored that subsection, at least in a footnote.
I decided that Boost.TypeIndex was a preferable thing to mention,
because it has the same interface across multiple platforms. The
information I used to have on __PRETTY_FUNCTION__
, etc., won't go back
in the book, but I might publish it online as a blog entry.
I filed the idea away for a time when work on the book was mostly behind me. Nearly a year later, that time has finally come.
My original plan was to take the information on
__PRETTY_FUNCTION__
, etc., from the July 2014 draft and turn it into a blog post, but I now think it makes more sense to simply republish the Item 4 draft that existed at that time. That way you can see the discussion of __PRETTY_FUNCTION__
and __FUNCSIG__
in context, and if you're really bored, you can also compare the initial published draft of Item 4 with the version that appears in the book. The July 2014 draft of Item 4 is available HERE.Either way, I hope you find the information on
__PRETTY_FUNCTION__
and __FUNCSIG__
interesting.Scott
I find it interesting, but many of these features disturb me with their "whiteboxness." I feel like more and more you have to get into the guts of "native" features of the compiler.
ReplyDelete