Updated code that would sort Date objects:
.
void good_bubble(vector
&data, vector::size_type start,
vector::size_type end)
{
   vector::size_type loop{0},
cur;
    bool done{false};
    while (loop <= end - start + 1
&& !done)
    {
        done = true;
        for (cur =
start; cur <= end - 1 - loop; ++cur)
        {
            //
use greater instead of >
            if
(data[cur].greater(data[cur +
1]))
            {
                swap(data[cur],
data[cur + 1]);
                done
= false;
            }
        }
        ++loop;
    }
    return;
}
.
Changed code has been highlighted.