In common.h, define func_lib for function objects.  In configure.ac, define HAVE_STD_FUNCTION and HAVE_BOOST_FUNCTION.  Include function headers in ndnboost.
diff --git a/ndnboost/smart_ptr/detail/shared_count.hpp b/ndnboost/smart_ptr/detail/shared_count.hpp
index ad53ec0..f723584 100644
--- a/ndnboost/smart_ptr/detail/shared_count.hpp
+++ b/ndnboost/smart_ptr/detail/shared_count.hpp
@@ -200,7 +200,7 @@
         }
         catch( ... )
         {
-            D()( p ); // delete p
+            D::operator_fn( p ); // delete p
             throw;
         }
 
@@ -210,7 +210,7 @@
 
         if( pi_ == 0 )
         {
-            D()( p ); // delete p
+            D::operator_fn( p ); // delete p
             ndnboost::throw_exception( std::bad_alloc() );
         }
 
@@ -286,7 +286,7 @@
         }
         catch(...)
         {
-            D()( p );
+            D::operator_fn( p );
 
             if( pi_ != 0 )
             {
@@ -306,7 +306,7 @@
         }
         else
         {
-            D()( p );
+            D::operator_fn( p );
             ndnboost::throw_exception( std::bad_alloc() );
         }