<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Sep 15, 2013 at 6:21 PM, Jean-Baptiste Kempf <span dir="ltr"><<a href="mailto:jb@videolan.org" target="_blank">jb@videolan.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">On 12 Sep, Steve Borho wrote :<br>
</div><div class="im">> Reimplementations of STL and Related Identity Crises<br>
> > ----------------------------------------------------<br>
> ><br>
> > Why are you reimplementing STL classes like std::list? I could understand<br>
> > if it was in C,<br>
> > so as to aid in the promised future port to C, but it's being done in C++,<br>
> > using new and<br>
> > delete, etc. This makes no sense. There's no reason to do this other than<br>
> > some misguided<br>
> > Not In House syndrome or obsession with the resulting binary size. So, uh,<br>
> > what?<br>
> ><br>
><br>
> STL implementations between different compilers (even between different<br>
> compiler versions) cause serious headaches because it is half-header and<br>
> half-lib.  Since a lot of users will use x265 as a static library, it<br>
> behooves us to avoid this pain.<br>
<br>
</div>Sorry, but which one is actually broken?<br></blockquote><div><br></div><div>I don't know that any of them are exactly broken, but I've heard from two different groups (one using two GCC versions and another using a combination of MSVC and Intel C) that when you link together libs that were compiled by different C++ compilers you get link errors or runtime heap corruption.</div>
<div><br></div><div>I think GCC, MSVC, and Intel C all assume that if you compile against their STL headers you also link with their STL lib.</div><div><br></div><div>It's not just me, I promise.  See <a href="http://stackoverflow.com/questions/5736289/binary-compatibility-of-stl-containers">http://stackoverflow.com/questions/5736289/binary-compatibility-of-stl-containers</a></div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Moreover, if the basic is broken in the compiler, use a 3rd party<br>
library to do the reimplementation (see projects like winpthread), why<br>
bloat the codebase with stuff like that?</blockquote></div><div><br></div><div>For the most part, we want to replace the STL with more basic C style code; like how we replaced std::ostringstream with simple malloc and memcpy.  list is the only std class, so far, that we've figured we need to have around a bit longer.</div>
<div><br></div>-- <br>Steve Borho
</div></div>