I am little confused with the applicability of reinterpret_cast vs static_cast. From what I have read the general rules are to use static cast when
reinterpret_cast
static_cast
Quick answer: use static_cast if it compiles, otherwise resort to reinterpret_cast.