On Oct 3, 2014, at 9:06 PM, Brian Geffon <[email protected]> wrote:

> Hey all,
> So there is a weird situation we're in with the c++ api where it has a
> dependency on shared_ptr which can exist in memory or tr1/memory and

Just stop doing this. tr1 is ancient, so require std::shared_ptr in order to 
build the C++ API. Then there's no possibility of confusion and this problem 
goes away.

> similarly in the namespace std:: and std;:tr1::, so in the c++ api's
> shared_ptr.h file we have the following mess:
> 
> 
> #include "ink_autoconf.h"
> #if HAVE_STD_SHARED_PTR
> #  include <memory>
> #else
> #  include <tr1/memory>
> #endif
> 
> namespace atscppapi {
> #if HAVE_STD_SHARED_PTR
> using std::shared_ptr;
> #else
> using std::tr1::shared_ptr;
> #endif
> }
> 
> And we're including ink_autoconf.h only because it determines which
> implementation of shared_ptr the user has. This can't work because this
> file is installed and ink_autoconf.h no longer exists. amc, suggested the
> following trick to handle the namespacing but it still falls short when
> determining which file to include, does anyone have ideas of how we can
> remove this dependency on ink_autoconf.h?
> 
> namespace tr1 { }
> namespace std_tr1 {
> using namespace std;
> using namespace tr1;
> }
> 
> namespace atscppapi {
> using std_tr1::shared_ptr;
> }
> 
> 
> Brian
> 
> On Fri, Oct 3, 2014 at 9:03 PM, Brian Geffon <[email protected]> wrote:
> 
>> Hey all,
>> So there is a weird situation we're in with the c++ api where it has a
>> dependency on shared_ptr which can exist in memory or tr1/memory and
>> similarly in the namespace std:: and std;:tr1::, so in the cppapi's
>> shared_ptr.h file we have the following mess:
>> #include "ink_autoconf.h"
>> 
>> 
>> #if HAVE_STD_SHARED_PTR
>> 
>> #  include <memory>
>> #else
>> 
>> #  include <tr1/memory>
>> 
>> #endif
>> 
>> 
>> namespace atscppapi {
>> 
>> #if HAVE_STD_SHARED_PTR
>> 
>> using std::shared_ptr;
>> 
>> #else
>> 
>> using std::tr1::shared_ptr;
>> 
>> #endif
>> 
>> 
>> } /* atscppapi */
>> 

Reply via email to