Cleanup #2028: replace usage of deprecated std::mem_fun with lambdas 97/4797/11
authorSam White <white67@illinois.edu>
Fri, 9 Nov 2018 00:24:57 +0000 (18:24 -0600)
committerEvan Ramos <evan@hpccharm.com>
Thu, 20 Dec 2018 01:28:10 +0000 (19:28 -0600)
This change enables building Charm with -std=c++17.

Co-authored-by: Evan Ramos <evan@hpccharm.com>
Change-Id: Iccde00c7dee21335d56cd3e3d136da95a8b71965

src/xlat-i/sdag/CSdagConstruct.C

index 09f55c1f3120ee3f4c898ad2c5631d4d20dbce87..27a84b9fb62375f99adb50ebdde678569c3421b4 100644 (file)
 using std::list;
 #include <algorithm>
 using std::for_each;
+
+#if __cplusplus < 201103L
 #include <functional>
 using std::mem_fun;
+#endif
 
 namespace xi {
 SdagConstruct::SdagConstruct(EToken t, SdagConstruct* construct1) {
@@ -67,7 +70,11 @@ SdagConstruct::~SdagConstruct() {
 void SdagConstruct::numberNodes(void) {
   if (constructs != 0)
     for_each(constructs->begin(), constructs->end(),
+#if __cplusplus < 201103L
              mem_fun(&SdagConstruct::numberNodes));
+#else
+             [](SdagConstruct * c) { c->numberNodes(); } );
+#endif
 }
 
 XStr* SdagConstruct::createLabel(const char* str, int nodeNum) {
@@ -84,7 +91,12 @@ void SdagConstruct::labelNodes() {
   if (label_str != 0) label = createLabel(label_str, nodeNum);
 
   if (constructs != 0)
-    for_each(constructs->begin(), constructs->end(), mem_fun(&SdagConstruct::labelNodes));
+    for_each(constructs->begin(), constructs->end(),
+#if __cplusplus < 201103L
+             mem_fun(&SdagConstruct::labelNodes));
+#else
+             [](SdagConstruct * c) { c->labelNodes(); } );
+#endif
 }
 
 void EntryList::generateEntryList(list<CEntry*>& CEntrylist, WhenConstruct* thisWhen) {
@@ -560,7 +572,11 @@ void SdagConstruct::setNext(SdagConstruct* n, int boe) {
 // for trace
 void SdagConstruct::generateTrace() {
   for_each(constructs->begin(), constructs->end(),
+#if __cplusplus < 201103L
            mem_fun(&SdagConstruct::generateTrace));
+#else
+           [](SdagConstruct * c) { c->generateTrace(); } );
+#endif
   if (con1) con1->generateTrace();
   if (con2) con2->generateTrace();
   if (con3) con3->generateTrace();