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/libs/functional/overloaded_function/test/functor.cpp b/libs/functional/overloaded_function/test/functor.cpp
new file mode 100644
index 0000000..078d977
--- /dev/null
+++ b/libs/functional/overloaded_function/test/functor.cpp
@@ -0,0 +1,34 @@
+
+// Copyright (C) 2009-2012 Lorenzo Caminiti
+// Distributed under the Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// Home at http://www.boost.org/libs/functional/overloaded_function
+
+#include "identity.hpp"
+#include <boost/functional/overloaded_function.hpp>
+#include <boost/detail/lightweight_test.hpp>
+
+int main() {
+    //[identity_calls
+    BOOST_TEST(identity_s("abc") == "abc");
+    BOOST_TEST(identity_i(123) == 123);
+    BOOST_TEST(identity_d(1.23) == 1.23);
+    //]
+
+    //[identity_functor
+    ndnboost::overloaded_function<
+          const std::string& (const std::string&)
+        , int (int)
+        , double (double)
+    > identity(identity_s, identity_i, identity_d);
+
+    // All calls via single `identity` function.
+    BOOST_TEST(identity("abc") == "abc");
+    BOOST_TEST(identity(123) == 123);
+    BOOST_TEST(identity(1.23) == 1.23);
+    //]
+
+    return ndnboost::report_errors();
+}
+