[3] std::get workaround for MSVC

MSVC needs to see the specializations of tuple_element before forward declaring get, otherwise it will confuse declaration and definition as different (ambiguous) overloads.