Listing 2
bool compare(const Address& rhs, const Address& lhs)
{
return makeLexicographicalRecordSort(Address::Country(),
Address::ZipCode(), Address::Street(), Address::HouseNo())(lhs,rhs);
}
Address addr;
addr.setStreet("Nerotal");
addr.setHouseNo(23);
addr.setCity("Wiesbaden");
addr.setZipCode("65193");
addr.setCountry("Germany");
Client rec;
rec.setName("Arne Adams");
typedef Client::GetValueTypeByTag<Client::Addresses>::type Addresses;
Addresses& addresses = rec.getAddresses();
addresses.push_back(addr);
addr.setStreet("Hansa-Allee");
addresses.push_back(addr);
std::cout << getRecordDesc(rec) // (1)
std::set<Client,RecordIsLess< Client > > sortedClients; // (2)