A pointer vector sorted by its member function
There's probably much that can be done here, but I'll point out some things I've noticed:


As @David Harkness has mentioned in the comments, the method-naming looks like C# naming (uppercase, or PascalCase).  While this isn't necessarily a bad thing as C++ is more flexible with naming, one problem here is that your types (particularly the class) and functions use the same naming convention, which may cause confusion for others.

I would use separate naming for both of them, such as by changing the functions to camelCase or snake_case, while keeping the types as is.
Since you're not overloading the default constructor, you don't have to include it.  The compiler will make a default one for you.

However, with C++11, you can now use default constructors:

SortedPtrVector() = default;

It looks like Add() is doing too many things:


the actual adding
updating a reference
returning a bool


Based on the name, it should just attempt to add something.  But if it's still necessary to update the index, then it should just return that.  You could instead return an std::pair&lt;iterator, bool&gt; as done with std::map::insert, but that may not be what you want here.
Find() shouldn't set index to 0 if the vector is empty.  An index of 0 is a valid position for a non-empty container (the first position).  Instead, it could return -1, which is an out-of-bounds value commonly used with not found (this is also the same value as the constant std::string::npos).

It may also be better to have Find() return an index instead of a bool.  Assuming this is to somewhat resemble std::map::find, it can return a past-the-end value (an iterator) if the key isn't found.
DeleteAt() may do something problematic if the argument isn't checked prior to calling erase() (an invalid index can cause erase() to attempt access to some other location, leading to undefined behavior).
Size() should be const as it's not modifying any data members.  You could also make it noexcept (also C++11) since it's guaranteed not to throw.

Also, unsigned is not quite the specific return type of std::size().  It should either return an std::size_t (usually assumed), std::vector&lt;std::unique_ptr&lt;T&gt;&gt;::size_type (very lengthy), or even better and shorter with C++14 (if your compiler also supports it): the type deduced by auto.

auto Size() const noexcept { return m_vector.size(); }