¿C ++ tiene una función libre `size (object)`?

Parece que la forma en que la mayoría de las personas encuentra el tamaño de unstring es que solo usan elmy_string.size() y funciona bien Bueno, recientemente hice una tarea para la clase donde hice ...

if (size(my_string) < 5)
    store[counter].setWeight(stoi(my_string));

En lugar de....

if (my_string.size() < 5)
    store[counter].setWeight(stoi(my_string));

Pero para mi sorpresa, mi instructor, que creo que está ejecutando un compilador anterior, no pudo ejecutar esa línea de código. En mi compilador funciona en ambos sentidos y no estoy muy seguro de por qué.

Un programa completo (produce 4 para ambos):

#include <string>
#include <iostream>
using namespace std;

int main()
{
    string myvar = "1000";
    cout << "Using size(myvar) = " << size(myvar) << endl;
    cout << "Using myvar.size() = " << myvar.size() << endl;
}

Si alguien puede arrojar algo de luz sobre por qué mi solución al problema funcionó en mi máquina, pero no en mis profesores. Además, actualmente estoy ejecutando VS2015.

Respuestas a la pregunta(3)

Su respuesta a la pregunta