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 *>> {};

Definition at line 423 of file Casting.h.