Currently there are bugs in out detection of multi-level pointer conversions and pointer to member conversions. This patch fixes the following issues.
- Allow multi-level pointers with different nested qualifiers.
- Allow multi-level mixed pointers to objects and pointers to members with different nested qualifiers.
- Allow conversions from int Base::* to int Derived::* but only for non-nested pointers.
There is still some work that needs to be done to clean this patch up but I want to get some input on it.
Open questions:
- Does __pointer_to_member_type_info::can_catch(...) need to adjust the pointer if a base to derived conversion is performed?