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/mpl/vector/aux_/at.hpp b/ndnboost/mpl/vector/aux_/at.hpp
new file mode 100644
index 0000000..c5f7d5e
--- /dev/null
+++ b/ndnboost/mpl/vector/aux_/at.hpp
@@ -0,0 +1,116 @@
+
+#ifndef BOOST_MPL_VECTOR_AUX_AT_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_AUX_AT_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: at.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/at_fwd.hpp>
+#include <ndnboost/mpl/vector/aux_/tag.hpp>
+#include <ndnboost/mpl/long.hpp>
+#include <ndnboost/mpl/void.hpp>
+#include <ndnboost/mpl/aux_/nttp_decl.hpp>
+#include <ndnboost/mpl/aux_/type_wrapper.hpp>
+#include <ndnboost/mpl/aux_/value_wknd.hpp>
+#include <ndnboost/mpl/aux_/config/typeof.hpp>
+#include <ndnboost/mpl/aux_/config/ctps.hpp>
+
+namespace ndnboost { namespace mpl {
+
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+
+template< typename Vector, long n_ >
+struct v_at_impl
+{
+    typedef long_< (Vector::lower_bound_::value + n_) > index_;
+    typedef __typeof__( Vector::item_(index_()) ) type;
+};
+
+
+template< typename Vector, long n_ >
+struct v_at
+    : aux::wrapped_type< typename v_at_impl<Vector,n_>::type >
+{
+};
+
+template<>
+struct at_impl< aux::vector_tag >
+{
+    template< typename Vector, typename N > struct apply
+        : v_at<
+              Vector
+            , BOOST_MPL_AUX_VALUE_WKND(N)::value
+            >
+    {
+    };
+};
+
+#else
+
+#   if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+    && !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
+
+template< typename Vector, BOOST_MPL_AUX_NTTP_DECL(long, n_) > struct v_at;
+
+template< BOOST_MPL_AUX_NTTP_DECL(long, n_) >
+struct at_impl< aux::vector_tag<n_> >
+{
+    template< typename Vector, typename N > struct apply
+#if !defined(__BORLANDC__)
+        : v_at<
+              Vector
+            , BOOST_MPL_AUX_VALUE_WKND(N)::value
+            >
+    {
+#else
+    {
+        typedef typename v_at<
+              Vector
+            , BOOST_MPL_AUX_VALUE_WKND(N)::value
+            >::type type;
+#endif
+    };
+};
+
+#   else
+
+namespace aux {
+
+template< BOOST_MPL_AUX_NTTP_DECL(long, n_) > struct v_at_impl
+{
+    template< typename V > struct result_;
+};
+
+// to work around ETI, etc.
+template<> struct v_at_impl<-1>
+{
+    template< typename V > struct result_
+    {
+        typedef void_ type;
+    };
+};
+
+} // namespace aux
+
+template< typename T, BOOST_MPL_AUX_NTTP_DECL(long, n_) >
+struct v_at
+    : aux::v_at_impl<n_>::template result_<T>
+{
+};
+
+#   endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+
+}}
+
+#endif // BOOST_MPL_VECTOR_AUX_AT_HPP_INCLUDED