Suppose we wanted to check the sizeof or the offset of a certain member within our struct (or class), without actually having an instantiated object to run the needed operations on. How would you do that?
I have spent quite a few hours during the last two days making thorough changes to this blog.
One of those new updates is the change of the previous blog name, “c++ talk” (at http://cpptalk.wordpress.com), to the new name “cplusplus.co.il” – followed by the addition of a new domain name: http://cplusplus.co.il.
However, it is important to note that the blog will remain fully reachable through the old wordpress domain and its links.
I’ve finally had a little time to advance with reading Alexandrescu’s book on Modern C++ design, and I’m absolutely blown away by the sheer awesomeness of its ideas. I highly recommend getting this book!
I would like to show just a little bit of what we can do with template specialization when it comes down to meta programming.
This is actually not a typo, I really meant to repeat the first word. Let’s see what template template parameters are..
Both std::cin and std::cout provide a conversion to a void* type, but not to a boolean:
operator void* (); // zero if and only if fail()
What use does a conversion to a boolean have, and which pitfalls does the current implementation save us from?
In this post I will introduce a common problem you are likely to bump into when inheriting from templated base classes.
C++ provides a mechanism that allows any function to declare exactly which exception types it may throw, and these declarations are actually enforced in runtime. We will review exactly how this mechanism works, and why it is usually left unused.
Suppose you have an array of integers and a comparator function object. Your mission, should you choose to accept it, is to sort the array in a reversed order.. Using only a single line of code.