Можно ли создать два списка, имеющих итераторы друг к другу в качестве элементов? - PullRequest
0 голосов
/ 15 февраля 2019

Я хочу иметь два списка с такими элементами, как std::tuple<IteratorOfOtherList, T>.Возможно ли это?

Что-то вроде этого:

#include <tuple>
#include <list>

class Foo { };
class Bar { };

class List2Iter;

typedef std::list<std::tuple<List2Iter, Foo>> List1;
typedef std::list<std::tuple<List1::iterator, Bar>> List2;
typedef List2::iterator List2Iter;

int main() {
    List1 list1{};
    List2 list2{};
    return 0;
}

Очевидно, что он не компилируется, потому что std :: tuple требует полных типов.

Есть ли обходные пути?

...