<div dir="ltr">The easy answer is "it was there before shared_ptr was, and no one's sufficiently motivated to remove it" - there may be varying levels of complexity/cost in removing it (it may perform better in some circumstances), though I'm not sure myself.</div><br><div class="gmail_quote"><div dir="ltr">On Wed, Oct 19, 2016 at 4:32 AM Ivan Kush via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">why llvm contains IntrusiveRefCntPtr instead of using only std::shared_ptr? IntrusiveRefCntPtr widely used in llvm and clang source code.<br class="gmail_msg">
Due to better performance?<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
for example in main func of clang frontend:<br class="gmail_msg">
<br class="gmail_msg">
int cc1_main(ArrayRef<const char *> Argv, const char *Argv0, void *MainAddr) {<br class="gmail_msg">
  ensureSufficientStack();<br class="gmail_msg">
<br class="gmail_msg">
  std::unique_ptr<CompilerInstance> Clang(new CompilerInstance());<br class="gmail_msg">
  IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs());<br class="gmail_msg">
<br class="gmail_msg">
  IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions();<br class="gmail_msg">
-- <br class="gmail_msg">
Best wishes,<br class="gmail_msg">
Ivan Kush<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
LLVM Developers mailing list<br class="gmail_msg">
<a href="mailto:llvm-dev@lists.llvm.org" class="gmail_msg" target="_blank">llvm-dev@lists.llvm.org</a><br class="gmail_msg">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br class="gmail_msg">
</blockquote></div>