Discourse will let non-members read content but they will be prompted to register an account when they want to post a reply. And also after they have read a bit.
But this seems like you are looking for a way to let non-members read content so they will want to register an account, but not let them read content until they register an account. Sorry, but I can’t see how it can be both ways.
I think I understand want you’re after, please correct me if I’m wrong.
You would like to expose topic titles in lists, with those topics in categories that require a visitor to be a registered member to be able to see the topic posts.
Currently, other than messages, there are no topic level permissions. If a visitor has permissions for a category, they can see both the topic titles and the content of topics in that category. If they want to post a reply / read a bit, they will be prompted to register an account.
I have a feeling that changing Core code would be very involved if even possible and IMHO not worth the effort for a feature that has not had much demand, is of limited value and would likely have a negative impact on the site in terms of SEO. Search engines are not registered members and would not have permissions to see more than the topic titles.
I’m thinking that if any work in this direction were to be done a good approach would be to expose the topic titles of topics in restricted categories in some type of widget that pulls the titles from RSS or JSON and shows a “must be registered to access” message somewhere.
You said that your forum is really a QA site. If you want visitors to not see answers, there might be a way to allow access to only those topics that have no replies if that would work for you.
Both of those approaches would be plugin territory.
As for using what Discourse currently has without changes to Core code or using a plugin, there is something that might work.
I’m assuming the intent is to say something like “the answers you seek are here, but you need to register to see them.” (whether or not they would be convinced the answers do indeed exist based on topic titles alone and would be enough to elicit registering is questionable).
Anyway, Discourse has Banner topics, and the Top and Header can get custom HTML. Maybe putting a well crafted message in one of those would be good enough?