balanced brackets in c++

#include <iostream>
#include <stack>

bool areBracketsBalanced(const std::string& expression) {
    std::stack<char> brackets;

    for (char bracket : expression) {
        if (bracket == '(' || bracket == '[' || bracket == '{') {
            brackets.push(bracket);
        } else if (bracket == ')' || bracket == ']' || bracket == '}') {
            if (brackets.empty()) {
                return false;
            } else if ((bracket == ')' && brackets.top() != '(') ||
                       (bracket == ']' && brackets.top() != '[') ||
                       (bracket == '}' && brackets.top() != '{')) {
                return false;
            }
            brackets.pop();
        }
    }

    return brackets.empty();
}

int main() {
    std::string expression;
    std::cout << "Enter an expression with brackets: ";
    std::cin >> expression;

    if (areBracketsBalanced(expression)) {
        std::cout << "Brackets are balanced." << std::endl;
    } else {
        std::cout << "Brackets are not balanced." << std::endl;
    }

    return 0;
}