The `*` matcher should use `bool(ptr)` rather than `ptr != nullptr` to support ptr-like types such as `optional<T>`
This is the relevant code: https://github.com/rollbear/trompeloeil/blob/2a633b923f32cebc336dc8a6a77e4c04f2238106/include/trompeloeil/matcher/deref.hpp#L47
!!ptr is also a valid alternative to bool(ptr), but I find the later more directly states intent. If you really wanted to avoid any backwards breaking changes you could use SFINAE tricks to continue using ptr != nullptr for types that support that, and fallback to bool(ptr) for other types, but that seems unnecessary to me. It would have a (probably small) compile time cost, and IMO any code where x != nullptr compiles and bool(x) doesn't or where they return different results is the mythical "code that deservers to be broken". (Ignoring DSL-like types such as boost spirit parsers, but they shouldn't be used with the * matcher anyway)
I suspect that it will be easier for you to just implement this tiny change yourself than waiting for me to put up a PR, then review it, then wait for me to respond to your feedback and update it again, etc. But if you would prefer, I don't mind putting up a PR.