How to use Boost in Visual Studio 2010

While Nate’s answer is pretty good already, I’m going to expand on it more specifically for Visual Studio 2010 as requested, and include information on compiling in the various optional components which requires external libraries. If you are using headers only libraries, then all you need to do is to unarchive the boost download and … Read more

When should you use ‘friend’ in C++?

Firstly (IMO) don’t listen to people who say friend is not useful. It IS useful. In many situations you will have objects with data or functionality that are not intended to be publicly available. This is particularly true of large codebases with many authors who may only be superficially familiar with different areas. There ARE … Read more

C++11 reverse range-based for-loop

Actually Boost does have such adaptor: boost::adaptors::reverse. #include <list> #include <iostream> #include <boost/range/adaptor/reversed.hpp> int main() { std::list<int> x { 2, 3, 5, 7, 11, 13, 17, 19 }; for (auto i : boost::adaptors::reverse(x)) std::cout << i << ‘\n’; for (auto i : x) std::cout << i << ‘\n’; }

Simple example of threading in C++

Create a function that you want the thread to execute, for example: void task1(std::string msg) { std::cout << “task1 says: ” << msg; } Now create the thread object that will ultimately invoke the function above like so: std::thread t1(task1, “Hello”); (You need to #include <thread> to access the std::thread class.) The constructor’s first argument … Read more

What are inline namespaces for?

Inline namespaces are a library versioning feature akin to symbol versioning, but implemented purely at the C++11 level (ie. cross-platform) instead of being a feature of a specific binary executable format (ie. platform-specific). It is a mechanism by which a library author can make a nested namespace look and act as if all its declarations … Read more