Temporal std :: cadenas devolviendo basura

Todavía estoy aprendiendo c ++, así que por favor tengan paciencia conmigo. Estoy escribiendo un envoltorio simple para impulsar las rutas del sistema de archivos. Tengo problemas extraños al devolver cadenas temporales. Aquí está mi clase simple (esto no es exacto, pero está bastante cerca):

typedef const char* CString;
typedef std::string String;
typedef boost::filesystem::path Path;

class FileReference {

    public:

        FileReference(const char* path) : mPath(path) {};

        // returns a path
        String  path() const {
            return mPath.string();
        };

        // returns a path a c string
        CString c_str() const {
            return mPath.string().c_str();
        };

    private:

        Path    mPath;

}

Con el pequeño código de prueba a continuación:

FileReference file("c:\\test.txt");

OutputDebugString(file.path().c_str()); // returns correctly c:\test.txt
OutputDebugString(file.c_str());        // returns junk (ie îþîþîþîþîþîþîþîþîþîþî.....)

Estoy bastante seguro de que esto tiene que ver con los temporales, pero no puedo entender por qué sería eso, ¿no debería estar todo copiando correctamente?

Respuestas a la pregunta(3)

Su respuesta a la pregunta