Как правильно применить функцию ко всем элементам двумерного вектора?
что то мудрено как то... for(auto &cellLine:matrix)
{
    for(auto &cell:cellLine)
    {
        cell.showBody();
    }
}
foreach и лямбда-функции здесь явно лишние.
про передачу по ссылке уже написал cppjunkie
Не меняются скорее всего из-за того что аргумент в лямбду передаётся по значению, поэтому весь вектор копируется и изменяется уже его копия. По-моему если поменять с vector<Cell> cellLine
наvector<Cell> &cellLine
то должно заработать. То же самое надо сделать и во внутреннем цикле относительно параметра Cell.