Fix assignment operator issue for latest MSVC+NVCC.
Details are scattered across #920 (closed), #1000 (closed), #1324 (closed), #2291 (closed).
Summary: some MSVC versions have a bug that requires omitting explicit
operator= definitions (leads to duplicate definition errors), and
some MSVC versions require adding explicit operator= definitions
(otherwise implicitly deleted errors). This mess tries to cover
all the cases encountered.
Fixes #2291 (closed).