#include <iostream>
#include <vector>
#include <unordered_set>
using namespace std;
struct A;
struct B;

using CA = std::vector< A >;
using CB = std::unordered_set< B >;


struct A
{
    int payload;
    typename CB::iterator pb; // hard error here
};

struct B
{
    double payload;
    typename CA::iterator pa;
};
int main() {
	A a;
	B b;
	return 0;
}