I don’t think so. In this case, I would just give tasks that have both foo and bar as tags a third tag that will allow those tasks to be run. It’s a little cumbersome, but it would work. However, as far as I know, there is no AND type of operator for tags.
You can achieve this by using when on the role to check a variable that you provide with extra_vars on the command line and keep the tags in the roles.