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/placeholders.hpp b/ndnboost/mpl/placeholders.hpp
new file mode 100644
index 0000000..86f8e09
--- /dev/null
+++ b/ndnboost/mpl/placeholders.hpp
@@ -0,0 +1,100 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
+#define BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-2003
+//
+// 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: placeholders.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+# include <ndnboost/mpl/arg.hpp>
+# include <ndnboost/mpl/aux_/adl_barrier.hpp>
+
+# if !defined(BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE)
+# define BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(type) \
+ using ::BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::type; \
+ /**/
+# else
+# define BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(type) /**/
+# endif
+
+#endif
+
+#include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE)
+
+# define BOOST_MPL_PREPROCESSED_HEADER placeholders.hpp
+# include <ndnboost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <ndnboost/mpl/aux_/nttp_decl.hpp>
+# include <ndnboost/mpl/limits/arity.hpp>
+# include <ndnboost/preprocessor/iterate.hpp>
+# include <ndnboost/preprocessor/cat.hpp>
+
+// watch out for GNU gettext users, who #define _(x)
+#if !defined(_) || defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<-1> _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+#endif
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#'
+/// specialization
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY + 1, <ndnboost/mpl/placeholders.hpp>))
+#include BOOST_PP_ITERATE()
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
+
+///// iteration
+
+#else
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+
+typedef arg<i_> BOOST_PP_CAT(_,i_);
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(BOOST_PP_CAT(_,i_))
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::BOOST_PP_CAT(_,i_);
+}
+
+}}
+
+#undef i_
+#endif // BOOST_PP_IS_ITERATING