In this exercise I am using Visual Studio 2019 and a modified version of the std_lib_facilities header found here.
Chapter 20 // Exercise 16
Define an ovector that is like a pvector except that [] and * operators return a reference to the object pointed to by an element rather than the pointer.
Due to how I'd implemented the PVector this was quite tricky. I ended up discovering std::remove_pointer<Type>::type in the std library which handily removes pointers from pointer types. So this allows the templated type to still only allow pointer types but when accessing via [] it decays the type and allows it to return a reference to the contents of the pointer whilst still being templated.
For operator * I just returned *vector[0] as I believe de-reffing a vector decays to the first element?
No comments:
Post a Comment