all: cleanup common.hpp and import typenames from ndn namespace.

This allows us to compile NFD in C++11 mode, making use of std::shared_ptr,
std::function, std::bind, etc. rather than their boost equivalents
(provided that ndn-cpp-dev is also compiled in C++11 mode). This is an
experimental feature and may not work properly.

Change-Id: I310529f78e1e428a8530b087983130d1ef3a9d88
diff --git a/daemon/common.hpp b/daemon/common.hpp
index e60dbc7..ec7a612 100644
--- a/daemon/common.hpp
+++ b/daemon/common.hpp
@@ -39,53 +39,42 @@
 #define PROTECTED_WITH_TESTS_ELSE_PRIVATE private
 #endif
 
+#include <ndn-cpp-dev/common.hpp>
 #include <ndn-cpp-dev/interest.hpp>
 #include <ndn-cpp-dev/data.hpp>
 
-#include <boost/utility.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
-#include <boost/function.hpp>
-#include <boost/bind.hpp>
-#include <boost/ref.hpp>
-#include <boost/asio.hpp>
 #include <boost/assert.hpp>
-#include <boost/functional/hash.hpp>
-#include <boost/algorithm/string.hpp>
 #include <boost/lexical_cast.hpp>
-
-#include <vector>
-#include <list>
-#include <queue>
-#include <set>
-#include <sstream>
-#include <istream>
-#include <fstream>
-#include <algorithm>
-#include <numeric>
+#include <boost/noncopyable.hpp>
+#include <boost/ref.hpp>
+#include <boost/scoped_ptr.hpp>
 
 namespace nfd {
 
 using boost::noncopyable;
-using boost::shared_ptr;
-using boost::enable_shared_from_this;
-using boost::make_shared;
-using boost::static_pointer_cast;
-using boost::dynamic_pointer_cast;
-using boost::weak_ptr;
-using boost::function;
-using boost::bind;
+using boost::scoped_ptr;
+
+using ndn::shared_ptr;
+using ndn::weak_ptr;
+using ndn::enable_shared_from_this;
+using ndn::make_shared;
+using ndn::static_pointer_cast;
+using ndn::dynamic_pointer_cast;
+using ndn::const_pointer_cast;
+using ndn::function;
+using ndn::bind;
 
 using ndn::Interest;
 using ndn::Data;
 using ndn::Name;
-namespace name = ndn::name;
 using ndn::Exclude;
 using ndn::Block;
+
 namespace tlv {
 using namespace ndn::Tlv;
 }
 
+namespace name = ndn::name;
 namespace time = ndn::time;
 
 } // namespace nfd
diff --git a/daemon/core/version.hpp b/daemon/core/version.hpp
index df92064..79b0be7 100644
--- a/daemon/core/version.hpp
+++ b/daemon/core/version.hpp
@@ -25,8 +25,6 @@
 #ifndef NFD_CORE_VERSION_HPP
 #define NFD_CORE_VERSION_HPP
 
-#include "common.hpp"
-
 namespace nfd {
 
 /** NFD version follows Semantic Versioning 2.0.0 specification
diff --git a/daemon/mgmt/command-validator.cpp b/daemon/mgmt/command-validator.cpp
index 22b8257..ac08228 100644
--- a/daemon/mgmt/command-validator.cpp
+++ b/daemon/mgmt/command-validator.cpp
@@ -29,6 +29,7 @@
 #include <ndn-cpp-dev/security/identity-certificate.hpp>
 
 #include <boost/filesystem.hpp>
+#include <fstream>
 
 namespace nfd {
 
diff --git a/daemon/mgmt/config-file.cpp b/daemon/mgmt/config-file.cpp
index 4af6f91..3be86c9 100644
--- a/daemon/mgmt/config-file.cpp
+++ b/daemon/mgmt/config-file.cpp
@@ -26,6 +26,7 @@
 #include "core/logger.hpp"
 
 #include <boost/property_tree/info_parser.hpp>
+#include <fstream>
 
 namespace nfd {
 
@@ -33,7 +34,6 @@
 
 ConfigFile::ConfigFile()
 {
-
 }
 
 void
diff --git a/daemon/mgmt/face-manager.cpp b/daemon/mgmt/face-manager.cpp
index 29f2b9e..95b01e0 100644
--- a/daemon/mgmt/face-manager.cpp
+++ b/daemon/mgmt/face-manager.cpp
@@ -23,16 +23,15 @@
  **/
 
 #include "face-manager.hpp"
-#include "face-flags.hpp"
 
+#include "face-flags.hpp"
 #include "core/logger.hpp"
 #include "core/face-uri.hpp"
 #include "core/network-interface.hpp"
 #include "fw/face-table.hpp"
 #include "face/tcp-factory.hpp"
 #include "face/udp-factory.hpp"
-
-#include <ndn-cpp-dev/management/nfd-face-event-notification.hpp>
+#include "mgmt/config-file.hpp"
 
 #ifdef HAVE_UNIX_SOCKETS
 #include "face/unix-stream-factory.hpp"
@@ -42,6 +41,8 @@
 #include "face/ethernet-factory.hpp"
 #endif // HAVE_PCAP
 
+#include <ndn-cpp-dev/management/nfd-face-event-notification.hpp>
+
 namespace nfd {
 
 NFD_LOG_INIT("FaceManager");
diff --git a/daemon/mgmt/face-manager.hpp b/daemon/mgmt/face-manager.hpp
index e0b4c6c..d1ba482 100644
--- a/daemon/mgmt/face-manager.hpp
+++ b/daemon/mgmt/face-manager.hpp
@@ -26,14 +26,10 @@
 #define NFD_MGMT_FACE_MANAGER_HPP
 
 #include "common.hpp"
-#include "face/face.hpp"
 #include "face/local-face.hpp"
-#include "mgmt/app-face.hpp"
 #include "mgmt/manager-base.hpp"
-#include "mgmt/config-file.hpp"
 #include "mgmt/face-status-publisher.hpp"
 #include "mgmt/notification-stream.hpp"
-#include "fw/face-table.hpp"
 
 #include <ndn-cpp-dev/management/nfd-control-parameters.hpp>
 #include <ndn-cpp-dev/management/nfd-control-response.hpp>
@@ -42,9 +38,12 @@
 
 const std::string FACE_MANAGER_PRIVILEGE = "faces";
 
-class ProtocolFactory;
-class NetworkInterfaceInfo;
+class ConfigFile;
+class Face;
+class FaceTable;
 class LocalFace;
+class NetworkInterfaceInfo;
+class ProtocolFactory;
 
 class FaceManager : public ManagerBase
 {
diff --git a/daemon/mgmt/face-status-publisher.cpp b/daemon/mgmt/face-status-publisher.cpp
index 2dc62d6..3e0ec42 100644
--- a/daemon/mgmt/face-status-publisher.cpp
+++ b/daemon/mgmt/face-status-publisher.cpp
@@ -25,6 +25,8 @@
 #include "face-status-publisher.hpp"
 #include "face-flags.hpp"
 #include "core/logger.hpp"
+#include "fw/face-table.hpp"
+
 #include <ndn-cpp-dev/management/nfd-face-status.hpp>
 
 namespace nfd {
diff --git a/daemon/mgmt/face-status-publisher.hpp b/daemon/mgmt/face-status-publisher.hpp
index 17e758d..7013ae7 100644
--- a/daemon/mgmt/face-status-publisher.hpp
+++ b/daemon/mgmt/face-status-publisher.hpp
@@ -25,11 +25,12 @@
 #ifndef NFD_MGMT_FACE_STATUS_PUBLISHER_HPP
 #define NFD_MGMT_FACE_STATUS_PUBLISHER_HPP
 
-#include "fw/face-table.hpp"
 #include "mgmt/segment-publisher.hpp"
 
 namespace nfd {
 
+class FaceTable;
+
 class FaceStatusPublisher : public SegmentPublisher
 {
 public:
diff --git a/daemon/mgmt/fib-enumeration-publisher.cpp b/daemon/mgmt/fib-enumeration-publisher.cpp
index cf40d87..daa5908 100644
--- a/daemon/mgmt/fib-enumeration-publisher.cpp
+++ b/daemon/mgmt/fib-enumeration-publisher.cpp
@@ -23,8 +23,8 @@
  **/
 
 #include "fib-enumeration-publisher.hpp"
-
 #include "core/logger.hpp"
+#include "table/fib.hpp"
 
 #include <ndn-cpp-dev/management/nfd-fib-entry.hpp>
 
@@ -38,12 +38,10 @@
   : SegmentPublisher(face, prefix)
   , m_fib(fib)
 {
-
 }
 
 FibEnumerationPublisher::~FibEnumerationPublisher()
 {
-
 }
 
 size_t
diff --git a/daemon/mgmt/fib-enumeration-publisher.hpp b/daemon/mgmt/fib-enumeration-publisher.hpp
index 7a33482..0baf3bc 100644
--- a/daemon/mgmt/fib-enumeration-publisher.hpp
+++ b/daemon/mgmt/fib-enumeration-publisher.hpp
@@ -25,11 +25,12 @@
 #ifndef NFD_MGMT_FIB_ENUMERATION_PUBLISHER_HPP
 #define NFD_MGMT_FIB_ENUMERATION_PUBLISHER_HPP
 
-#include "table/fib.hpp"
 #include "mgmt/segment-publisher.hpp"
 
 namespace nfd {
 
+class Fib;
+
 class FibEnumerationPublisher : public SegmentPublisher
 {
 public:
diff --git a/daemon/mgmt/fib-manager.hpp b/daemon/mgmt/fib-manager.hpp
index eef58fa..4c3bf8d 100644
--- a/daemon/mgmt/fib-manager.hpp
+++ b/daemon/mgmt/fib-manager.hpp
@@ -26,14 +26,12 @@
 #define NFD_MGMT_FIB_MANAGER_HPP
 
 #include "common.hpp"
-#include "face/face.hpp"
-#include "mgmt/app-face.hpp"
-#include "fw/strategy.hpp"
 #include "mgmt/manager-base.hpp"
 #include "mgmt/fib-enumeration-publisher.hpp"
 
 namespace nfd {
 
+class Face;
 class Forwarder;
 class Fib;
 
diff --git a/daemon/table/cs.hpp b/daemon/table/cs.hpp
index a1769ea..f52585b 100644
--- a/daemon/table/cs.hpp
+++ b/daemon/table/cs.hpp
@@ -36,8 +36,7 @@
 #include <boost/multi_index/sequenced_index.hpp>
 #include <boost/multi_index/identity.hpp>
 
-using namespace ::boost;
-using namespace ::boost::multi_index;
+#include <queue>
 
 namespace nfd {
 
@@ -69,26 +68,26 @@
 class byStaleness;
 class byArrival;
 
-typedef multi_index_container<
+typedef boost::multi_index_container<
   cs::Entry*,
-  indexed_by<
+  boost::multi_index::indexed_by<
 
     // by arrival (FIFO)
-    sequenced<
-      tag<byArrival>
+    boost::multi_index::sequenced<
+      boost::multi_index::tag<byArrival>
     >,
 
     // index by staleness time
-    ordered_non_unique<
-      tag<byStaleness>,
-      identity<cs::Entry*>,
+    boost::multi_index::ordered_non_unique<
+      boost::multi_index::tag<byStaleness>,
+      boost::multi_index::identity<cs::Entry*>,
       StalenessComparator
     >,
 
     // unsolicited Data is in the front
-    ordered_non_unique<
-      tag<unsolicited>,
-      identity<cs::Entry*>,
+    boost::multi_index::ordered_non_unique<
+      boost::multi_index::tag<unsolicited>,
+      boost::multi_index::identity<cs::Entry*>,
       UnsolicitedComparator
     >
 
diff --git a/daemon/table/name-tree.cpp b/daemon/table/name-tree.cpp
index c4380ce..101014a 100644
--- a/daemon/table/name-tree.cpp
+++ b/daemon/table/name-tree.cpp
@@ -27,6 +27,8 @@
 #include "name-tree.hpp"
 #include "core/logger.hpp"
 
+#include <boost/functional/hash.hpp>
+
 namespace nfd {
 
 NFD_LOG_INIT("NameTree");
diff --git a/tests/core/logger.cpp b/tests/core/logger.cpp
index 1ccbc31..5a85d45 100644
--- a/tests/core/logger.cpp
+++ b/tests/core/logger.cpp
@@ -24,14 +24,11 @@
 
 #include "core/logger.hpp"
 
-#include <boost/test/unit_test.hpp>
+#include "tests/test-common.hpp"
+
 #include <boost/algorithm/string.hpp>
 #include <boost/algorithm/string/classification.hpp>
 
-#include <iostream>
-
-#include "tests/test-common.hpp"
-
 namespace nfd {
 namespace tests {
 
diff --git a/tests/core/resolver.cpp b/tests/core/resolver.cpp
index a8e05ce..18d35b7 100644
--- a/tests/core/resolver.cpp
+++ b/tests/core/resolver.cpp
@@ -24,7 +24,6 @@
 
 #include "core/resolver.hpp"
 #include "core/logger.hpp"
-#include <boost/test/unit_test.hpp>
 
 #include "tests/test-common.hpp"
 
diff --git a/tests/face/ndnlp.cpp b/tests/face/ndnlp.cpp
index 66a1c84..f5ba8e1 100644
--- a/tests/face/ndnlp.cpp
+++ b/tests/face/ndnlp.cpp
@@ -156,8 +156,10 @@
   ReassembleFixture()
     : m_slicer(1500)
   {
-    m_partialMessageStore.onReceive += bind(&std::vector<Block>::push_back,
-                                            &m_received, _1);
+    m_partialMessageStore.onReceive +=
+      // push_back in C++11 has 2 overloads, and specific version needs to be selected
+      bind(static_cast<void (std::vector<Block>::*)(const Block&)>(&std::vector<Block>::push_back),
+           &m_received, _1);
   }
 
   Block
diff --git a/tests/mgmt/command-validator.cpp b/tests/mgmt/command-validator.cpp
index 7f34971..69c44a0 100644
--- a/tests/mgmt/command-validator.cpp
+++ b/tests/mgmt/command-validator.cpp
@@ -27,10 +27,10 @@
 
 #include "tests/test-common.hpp"
 
-#include <boost/test/unit_test.hpp>
 #include <ndn-cpp-dev/util/command-interest-generator.hpp>
 #include <ndn-cpp-dev/util/io.hpp>
 #include <boost/filesystem.hpp>
+#include <fstream>
 
 namespace nfd {
 
diff --git a/tests/mgmt/config-file.cpp b/tests/mgmt/config-file.cpp
index df0d9c3..ff352d4 100644
--- a/tests/mgmt/config-file.cpp
+++ b/tests/mgmt/config-file.cpp
@@ -22,11 +22,12 @@
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  **/
 
-
 #include "mgmt/config-file.hpp"
 
 #include "tests/test-common.hpp"
 
+#include <fstream>
+
 namespace nfd {
 namespace tests {
 
diff --git a/tests/mgmt/fib-enumeration-publisher-common.hpp b/tests/mgmt/fib-enumeration-publisher-common.hpp
index cfe4232..b5ce20c 100644
--- a/tests/mgmt/fib-enumeration-publisher-common.hpp
+++ b/tests/mgmt/fib-enumeration-publisher-common.hpp
@@ -29,6 +29,8 @@
 
 #include "mgmt/app-face.hpp"
 #include "mgmt/internal-face.hpp"
+#include "table/fib.hpp"
+#include "table/name-tree.hpp"
 
 #include "tests/test-common.hpp"
 #include "../face/dummy-face.hpp"
@@ -79,13 +81,11 @@
     , m_publisher(m_fib, m_face, "/localhost/nfd/FibEnumerationPublisherFixture")
     , m_finished(false)
   {
-
   }
 
   virtual
   ~FibEnumerationPublisherFixture()
   {
-
   }
 
   bool