Starting from the current nightly build (and PyTorch 1.5 soon), for
a[1:10:2, :, None, :]

we can write
using namespace torch::indexing;
a.index({Slice(1, 10, 2), Slice(), None, Slice()});

Here is the general translation for Tensor::index and Tensor::index_put_ functions:
Python             C++ (assuming `using namespace at::indexing`)
-------------------------------------------------------------------
0                  0
None               None
...                "..." or Ellipsis
:                  Slice()
start:stop:step    Slice(start, stop, step)
True / False       true / false
[[1, 2]]           torch::tensor({{1, 2}})