<p>This is a post I wrote several years ago and it’s been languishing in my drafts folder ever since. I’m not working on this particular codebase any more. That said, the problems caused by using Java-like getter and setter functions as the sole interface to the object in the context described in the post have a bigger impact these days as they will also affect move construction and move assignment. While I’m not opposed to using getter and setter functions in C++ in general, I…
<p>Lisp dialects like <a href="http://clojure.org/">Clojure</a> have a very rich set of algorithms that can present altered views on containers without modifying data in the underlying container. This is very important in functional languages as data is immutable and returning copies of containers is costly despite the containers being optimised for copy-on-write. Having these algorithms available prevents unnecessary data copies. While I am not going into mutating algorithms in this post, the…
<p>I’ve been doing a reasonable amount of <a href="http://clojure.org/">Clojure</a> development recently and like a lot of other Lisp dialect have marveled at the ease of separately pulling out the keys and values from a map. This is a very common operation after all, but C++ does only appear to support manual key or value extraction from a std::map.</p>
<p>Stuff you find that shows you’ve been around this programming business for a while:</p>
<p>I’m generally more of a grep person but sometimes it’s easier to just use the built-in search in Visual Studio, especially if you want to be able to restrict the search to parts of your Visual Studio solution. Visual Studio does have pretty powerful search built in if you do use regular expressions instead of the default text matching. Here are a couple of regexes to get you started:</p>
<p>In my previous post, I discussed <a href="https://www.lonecpluspluscoder.com/2014/12/03/managing-third-party-libraries-c-projects/" title="Managing third party libraries in C++ projects">various strategies for managing third party libraries</a>. In this post I’ll discuss a couple of techniques you can use to ensure that a specific version of your source code will get compiled with the correct version of the required libraries.</p>
<p>Every reasonably sized C++ project these days will use some third party libraries. Some of them like <a href="http://boost.org/">boost</a> are viewed as extensions of the standard libraries that no sane developer would want to be without. Then there is whatever GUI toolkit your project uses, possibly another toolkit to deal with data access, the <a href="http://www.cs.wustl.edu/~schmidt/ACE.html">ACE libraries</a>, etc etc. You get the picture.</p>
<p><em>Reposted from my old blog. Here’s the news from 2009…</em></p>
<p><em>I originally published this post on my old blog in 2009. I’ve edited it a little for readability but left the contents unchanged, so it may be out of date and not reflect the current state of the <a href="http://www.pantheios.org/">pantheios</a> library. I also haven’t been using pantheios for logging since about 2010, and have been using <a href="http://www.boost.org/doc/libs/1_55_0/libs/log/doc/html/index.html">Boost.Log</a> instead.</em></p>
<p><em>Another slightly edited post from my old C++ blog. Again, you may have seen this one before.</em></p>