Crash in ToLowercase()

I wonder if it might be worthwhile to write a different implementation for ToLowercase. The function pointer cast looks a bit fishy. And it seems it should have a check to make ensure the input is pure ASCII, in order to avoid undefined behavior.

  vtkStdString ToLowercase(const vtkStdString& str)
  {                 
    vtkStdString s;
    std::transform(str.begin(), str.end(), std::back_inserter(s), (int (*)(int))std::tolower);
    return s;
  }

@amaclean any thoughts?