Bug #3882
Updated by Alex Afanasyev almost 8 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?