Why should I have written ZeroMQ in C, not C++ (2012)
Read this paper before and don&#x27;t buy it.<p><pre><code>   &#x2F;&#x2F; c++
   if (condition1)
      throw my_exception1 ();
</code></pre>
you throw an exception because you can&#x27;t handle it locally. But then he says<p><pre><code>   &#x2F;&#x2F; C
   if (condition1)
      handle_exception1 ();
</code></pre>
so if it can be handled locally in C it can also be in C++, so why throw anything?<p>Also, and I&#x27;m not a C++ guy (a little exposure many years ago) so someone correct me, but if you look at part 2 of this article (link at bottom to <a href="https:&#x2F;&#x2F;250bpm.com&#x2F;blog:8&#x2F;" rel="nofollow">https:&#x2F;&#x2F;250bpm.com&#x2F;blog:8&#x2F;</a>) he then complains about having to have helper data structures<p><pre><code>   &#x2F;&#x2F; c++
   class person
   {
       int age;
       int weight;
   };

   std::list &lt;person*&gt; people;
</code></pre>
vs<p><pre><code>   &#x2F;&#x2F; C
   struct person
   {
       struct person *prev;
       struct person *next;
       int age;
       int weight;
   };

   struct
   {
       struct person *first;
       struct person *last;
   } people;

</code></pre>
&quot;First thing to note is that the C++ solution allocates twice the number of memory chunks compared to the C solution. For each element of the list there&#x27;s a little helper object created.&quot;  [he provides a diagram too]<p>But surely you can roll those helper objects into the main structure with templates - that is possible, right? OK, you don&#x27;t use the library util &#x27;std::list &lt;person*&gt; people&#x27; but still, it&#x27;s possible and straightforward, right? Edit: and this was possible in 2012&#x27;s version of C++ too I&#x27;m sure.