Project

General

Profile

Bug #3882

Updated by Alex Afanasyev over 7 years ago

Even though we have the concept checks for default-construction, it fails on Ubuntu 14.04.5 with gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3).      The same code compiles on Ubuntu 16.04.1 with stock gcc and on macOS 10.12 with stock clang. 

   

 The error appears when compiling the snippet within ndnSIM. I will try to create a simpler snippet later. 

 ```c++ 
 ... 
 static PyObject* _wrap_PyNs3NdnNfdFib_Iter__tp_iternext(PyNs3NdnNfdFib_Iter *self) 
 { 
     ... 
     ns3::ndn::nfd::Fib::const_iterator iter; 
     ... 
 } 
 ``` 

 The error I'm getting is the following 

 ``` 
 [1377/2352] Compiling build/src/ndnSIM/bindings/ns3module.cc 
 In file included from /usr/include/boost/range/adaptor/transformed.hpp:16:0, 
                  from /usr/include/boost/range/adaptor/map.hpp:14, 
                  from ./ns3/ndnSIM/NFD/daemon/fw/face-table.hpp:31, 
                  from ./ns3/ndnSIM/NFD/daemon/fw/forwarder.hpp:32, 
                  from ./ns3/ndnSIM/helper/ndn-strategy-choice-helper.hpp:31, 
                  from ./ns3/ndnSIM/helper/ndn-stack-helper.hpp:32, 
                  from ./ns3/ndn-all.hpp:23, 
                  from ./ns3/ndnSIM-module.h:10, 
                  from src/ndnSIM/bindings/ns3module.h:78, 
                  from src/ndnSIM/bindings/ns3module.cc:1: 
 /usr/include/boost/iterator/transform_iterator.hpp: In instantiation of ‘boost::transform_iterator<UnaryFunction, Iterator, Reference, Value>::transform_iterator() [with UnaryFunc = nfd::name_tree::GetTableEntry<nfd::fib::Entry>; Iterator = nfd::name_tree::Iterator; Reference = boost::use_default; Value = boost::use_default]’: 
 src/ndnSIM/bindings/ns3module.cc:1723:40:     required from here 
 /usr/include/boost/iterator/transform_iterator.hpp:84:26: error: no matching function for call to ‘nfd::name_tree::GetTableEntry<nfd::fib::Entry>::GetTableEntry()’ 
      transform_iterator() { } 
                           ^ 
 /usr/include/boost/iterator/transform_iterator.hpp:84:26: note: candidates are: 
 In file included from ../src/ndnSIM/NFD/daemon/table/name-tree-hashtable.hpp:29:0, 
                  from ../src/ndnSIM/NFD/daemon/table/name-tree-iterator.hpp:29, 
                  from ../src/ndnSIM/NFD/daemon/table/name-tree.hpp:29, 
                  from ../src/ndnSIM/NFD/daemon/table/fib.hpp:30, 
                  from ./ns3/ndnSIM/NFD/daemon/fw/forwarder.hpp:34, 
                  from ./ns3/ndnSIM/helper/ndn-strategy-choice-helper.hpp:31, 
                  from ./ns3/ndnSIM/helper/ndn-stack-helper.hpp:32, 
                  from ./ns3/ndn-all.hpp:23, 
                  from ./ns3/ndnSIM-module.h:10, 
                  from src/ndnSIM/bindings/ns3module.h:78, 
                  from src/ndnSIM/bindings/ns3module.cc:1: 
 ../src/ndnSIM/NFD/daemon/table/name-tree-entry.hpp:193:3: note: nfd::name_tree::GetTableEntry<ENTRY>::GetTableEntry(nfd::name_tree::GetTableEntry<ENTRY>::Getter) [with ENTRY = nfd::fib::Entry; nfd::name_tree::GetTableEntry<ENTRY>::Getter = nfd::fib::Entry* (nfd::name_tree::Entry::*)()const] 
    GetTableEntry(Getter getter) 
    ^ 
 ../src/ndnSIM/NFD/daemon/table/name-tree-entry.hpp:193:3: note:     candidate expects 1 argument, 0 provided 
 ../src/ndnSIM/NFD/daemon/table/name-tree-entry.hpp:185:7: note: constexpr nfd::name_tree::GetTableEntry<nfd::fib::Entry>::GetTableEntry(const nfd::name_tree::GetTableEntry<nfd::fib::Entry>&) 
  class GetTableEntry 
        ^ 
 ../src/ndnSIM/NFD/daemon/table/name-tree-entry.hpp:185:7: note:     candidate expects 1 argument, 0 provided 
 ../src/ndnSIM/NFD/daemon/table/name-tree-entry.hpp:185:7: note: constexpr nfd::name_tree::GetTableEntry<nfd::fib::Entry>::GetTableEntry(nfd::name_tree::GetTableEntry<nfd::fib::Entry>&&) 
 ../src/ndnSIM/NFD/daemon/table/name-tree-entry.hpp:185:7: note:     candidate expects 1 argument, 0 provided 
 ``` 

 Is it gcc being stupid?

Back