#include <iostream>
#include <vector>
#include <list>
#include <deque>
#include <set>
#include <unordered_set>
using namespace std;
struct A;
struct B;
using CA = std::unordered_set< 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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPGRlcXVlPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RydWN0IEE7CnN0cnVjdCBCOwoKdXNpbmcgQ0EgPSBzdGQ6OnVub3JkZXJlZF9zZXQ8IEEqID47CnVzaW5nIENCID0gc3RkOjp1bm9yZGVyZWRfc2V0PCBCKiA+OwoKCnN0cnVjdCBBCnsKICAgIGludCBwYXlsb2FkOwogICAgdHlwZW5hbWUgQ0I6Oml0ZXJhdG9yIHBiOyAvLyBoYXJkIGVycm9yIGhlcmUKfTsKCnN0cnVjdCBCCnsKICAgIGRvdWJsZSBwYXlsb2FkOwogICAgdHlwZW5hbWUgQ0E6Oml0ZXJhdG9yIHBhOwp9OwppbnQgbWFpbigpIHsKCUEgYTsKCUIgYjsKCXJldHVybiAwOwp9