It seems that I found a solution which I am providing here in case someone else is interested
return torch::reshape(torch::stack( { base[k], base[k+1] } ), {1,2});

In contrast to posts from some time ago, torch::stack( ... ).view(1,2) does not seem to work.
In an attempt to extend the above to the 2d tensor case, I figured out that
return torch::reshape(torch::stack( { base[k], base[k+1], torch::zeros(1), 
                                      torch::zeros(1), base[k+2], base[k+3] } ), {2,3});

yields a segmentation fault. What works is to make
torch::Tensor zero = torch::zeros(1);

a member attribute of the surrounding class and replace the above by
return torch::reshape(torch::stack( { base[k], base[k+1], zero[0], 
                                      zero[0], base[k+2], base[k+3] } ), {2,3});