LLVM: llvm::ForwardToPointerCast< To, From, ForwardTo (original) (raw)
Provides a cast trait that uses a defined pointer to pointer cast as a base for reference-to-reference casts. More...
template<typename To, typename From, typename ForwardTo>
struct llvm::ForwardToPointerCast< To, From, ForwardTo >
Provides a cast trait that uses a defined pointer to pointer cast as a base for reference-to-reference casts.
Note that it does not provide castFailed and doCastIfPossible because a pointer-to-pointer cast would likely just return nullptr which could cause nullptr dereference. You can use it like this:
template <> struct CastInfo<foo, bar *> { ... verbose implementation... };
template <> struct CastInfo<foo, bar> : public ForwardToPointerCast<foo, bar, CastInfo<foo, bar *>> {};