Project

General

Profile

Actions

Bug #3882

closed

Fib::const_iterator is not default-constructible

Added by Alex Afanasyev almost 8 years ago. Updated almost 8 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
Tables
Target version:
Start date:
Due date:
% Done:

100%

Estimated time:
2.00 h

Description

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.

...
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?

Actions

Also available in: Atom PDF