Here's a possible solution in C++:

```
class Solution {
public:
    int sumOfLeftLeaves(TreeNode* root) {
        if (!root) {
            return 0;
        }
        if (root->left && !root->left->left && !root->left->right) {
            // If the node has a left child which is a leaf, add its value to the sum
            return root->left->val + sumOfLeftLeaves(root->right);
        }
        // Traverse the rest of the tree and check for left leaves
        return sumOfLeftLeaves(root->left) + sumOfLeftLeaves(root->right);
    }
};
```

This solution recursively traverses the tree and checks if each node has a left child which is a leaf. If so, it adds its value to the sum and continues to traverse the right subtree. Otherwise, it simply continues traversing both subtrees. The function returns the final sum computed this way.
Risolvi questa sfida di programmazione competitiva utilizzando C++: data la radice di un albero binario, restituisci la somma di tutte le foglie a sinistra. Una foglia è un nodo senza figli. Una foglia sinistra è una foglia figlia sinistra di un altro nodo.