The actual syntax is:
auto actor = vtkSmartPointer<vtkActor>::New()
I agree it is shorter and not as redundant as:
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New()
But still not as short, simple, and foolproof as:
vtkNew<vtkActor> actor;
I find both vtkNew and vtkSmartPointer very useful and choose vtkNew whenever it is possible and vtkSmartPointer otherwise. Most new users seem to only use VTK via Python anyway, while long-time VTK users got to do things certain way, so maybe there is not much to do here. Perhaps the examples could be updated to use more smart pointers instead of manual object creation/deletion.