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/function_types/detail/pp_retag_default_cc/master.hpp b/ndnboost/function_types/detail/pp_retag_default_cc/master.hpp
new file mode 100644
index 0000000..2b0f2f8
--- /dev/null
+++ b/ndnboost/function_types/detail/pp_retag_default_cc/master.hpp
@@ -0,0 +1,103 @@
+
+// (C) Copyright Tobias Schwinger
+//
+// Use modification and distribution are subject to the boost Software License,
+// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+
+//------------------------------------------------------------------------------
+
+// no include guards, this file is guarded externally
+
+#ifdef __WAVE__
+// this file has been generated from the master.hpp file in the same directory
+#   pragma wave option(preserve: 0)
+#endif
+
+#if !defined(BOOST_PP_VALUE)
+#   include <ndnboost/preprocessor/slot/slot.hpp>
+#   include <ndnboost/preprocessor/iteration/self.hpp>
+
+#   include <ndnboost/function_types/detail/encoding/def.hpp>
+#   include <ndnboost/function_types/detail/encoding/aliases_def.hpp>
+
+namespace ndnboost { namespace function_types {
+
+namespace detail
+{
+  template<class Tag, class RefTag> struct selector_bits
+  {
+#   define  BOOST_PP_VALUE non_member|member|non_variadic|variadic
+#   include BOOST_PP_ASSIGN_SLOT(1)
+
+    BOOST_STATIC_CONSTANT(bits_t, value = (
+        (::ndnboost::function_types::detail::bits<Tag>::value & BOOST_FT_default_cc) 
+      | (::ndnboost::function_types::detail::bits<RefTag>::value & BOOST_PP_SLOT(1))
+    ));
+  };
+
+  template<bits_t SelectorBits> struct default_cc_tag; 
+  
+  template<class Tag, class RefTag> struct retag_default_cc
+    : detail::compound_tag
+      < Tag, detail::default_cc_tag< 
+          ::ndnboost::function_types::detail::selector_bits<Tag,RefTag>::value > >
+  { };
+
+  template<bits_t SelectorBits> struct default_cc_tag
+  {
+    typedef null_tag::bits bits;
+    typedef null_tag::mask mask;
+  };
+
+  class test_class;
+  typedef constant<BOOST_FT_cc_mask> cc_mask_constant;
+
+#   define BOOST_FT_self \
+      <ndnboost/function_types/detail/pp_retag_default_cc/master.hpp>
+
+#   define  default_cc_ BOOST_FT_default_cc
+
+#   define  BOOST_PP_VALUE default_cc_|non_member|non_variadic
+#   define  BOOST_FT_tester void (*tester)()
+#   define  BOOST_PP_INDIRECT_SELF BOOST_FT_self
+#   include BOOST_PP_INCLUDE_SELF()
+
+#   define  BOOST_PP_VALUE default_cc_|non_member|variadic
+#   define  BOOST_FT_tester void (*tester)(...)
+#   define  BOOST_PP_INDIRECT_SELF BOOST_FT_self
+#   include BOOST_PP_INCLUDE_SELF()
+
+#   define  BOOST_PP_VALUE default_cc_|member|non_variadic
+#   define  BOOST_FT_tester void (test_class::*tester)()
+#   define  BOOST_PP_INDIRECT_SELF BOOST_FT_self
+#   include BOOST_PP_INCLUDE_SELF()
+
+#   define  BOOST_PP_VALUE default_cc_|member|variadic
+#   define  BOOST_FT_tester void (test_class::*tester)(...)
+#   define  BOOST_PP_INDIRECT_SELF BOOST_FT_self
+#   include BOOST_PP_INCLUDE_SELF()
+
+#   undef   default_cc_
+
+#   undef BOOST_FT_self
+
+} } } // namespace ::ndnboost::function_types::detail
+
+#   include <ndnboost/function_types/detail/encoding/aliases_undef.hpp>
+#   include <ndnboost/function_types/detail/encoding/undef.hpp>
+
+#else // if defined(BOOST_PP_VALUE)
+
+#   include BOOST_PP_ASSIGN_SLOT(1)
+
+  template<> struct default_cc_tag<BOOST_PP_SLOT(1)> 
+  {
+    typedef BOOST_FT_tester;
+    typedef mpl::bitand_<components<tester>::bits,cc_mask_constant> bits;
+    typedef cc_mask_constant mask;
+  };
+
+#   undef BOOST_FT_tester
+
+#endif
+