Eradicate all uses of std::bind()

Change-Id: I6e1ccf2d87b76142e6d519c1a288d03022e4d167
diff --git a/tools/chunks/catchunks/data-fetcher.cpp b/tools/chunks/catchunks/data-fetcher.cpp
index 43d5076..baed34f 100644
--- a/tools/chunks/catchunks/data-fetcher.cpp
+++ b/tools/chunks/catchunks/data-fetcher.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2016-2019, Regents of the University of California,
+ * Copyright (c) 2016-2021, Regents of the University of California,
  *                          Colorado State University,
  *                          University Pierre & Marie Curie, Sorbonne University.
  *
@@ -85,9 +85,9 @@
 {
   m_nCongestionRetries = 0;
   m_pendingInterest = m_face.expressInterest(interest,
-                                             bind(&DataFetcher::handleData, this, _1, _2, self),
-                                             bind(&DataFetcher::handleNack, this, _1, _2, self),
-                                             bind(&DataFetcher::handleTimeout, this, _1, self));
+    [=] (auto&&... args) { handleData(std::forward<decltype(args)>(args)..., self); },
+    [=] (auto&&... args) { handleNack(std::forward<decltype(args)>(args)..., self); },
+    [=] (auto&&... args) { handleTimeout(std::forward<decltype(args)>(args)..., self); });
 }
 
 void
@@ -113,7 +113,7 @@
 
   if (m_isVerbose)
     std::cerr << "Received Nack with reason " << nack.getReason()
-              << " for Interest " << interest << std::endl;
+              << " for Interest " << interest << "\n";
 
   if (m_nNacks <= m_maxNackRetries || m_maxNackRetries == MAX_RETRIES_INFINITE) {
     Interest newInterest(interest);
@@ -162,7 +162,7 @@
     ++m_nTimeouts;
 
   if (m_isVerbose)
-    std::cerr << "Timeout for Interest " << interest << std::endl;
+    std::cerr << "Timeout for Interest " << interest << "\n";
 
   if (m_nTimeouts <= m_maxTimeoutRetries || m_maxTimeoutRetries == MAX_RETRIES_INFINITE) {
     Interest newInterest(interest);