I've got a question regarding template specializations in C++: I understand what this is, but do not understand when and why it should be used (examples that I have are not great). Quoting the last part (note that the question was significantly edited since then, here are old words):

My question being: when one should use template specialization in C++03/C++11? Alternative wording: what are some good examples of template specialization, like std::swap (if it is a good example at all)?

A person suggested that this question is off-topic and pointed me to Why do 'some examples' and 'list of things' questions get closed? question on meta. This Q&A refers to help center and states that these these question are off-topic "because there is no right answer" (not answers).

While I agree with the reasoning and there are things in my question which can be significantly improved, I was quite surprised that there is no place to ask about "when to use X" questions. So, I did some research. I started with Is there a less restrictive Stack Exchange site specially suited for not too specific questions? question and corresponding answer:

  1. Conceptual questions. That is covered on softwareengineering.stackexchange.com

I think that "when do I use X" is a conceptual question. Still, comments suggest that "Programmers" (old name of softwareengineering) has its own rules and questions should not be opinion-based. Ok, let's look at Meta:

Fair enough: looks like general questions are too board and opinion-based because different situations require different solutions.

However, I've found several open popular question on both StackOverflow and softwareengineering which are, I think, similar to mine (all of them are of form "when to use X" and do not provide any specify problems that OPs try to solve). From SO:

There is a bunch of very general questions marked with c++-faq (they probably went through some special process which lifts some restrictions), from SO:

And some questions closed for being either non-constructive or opinion-based:

And, finally, questions on SE:

So, it looks like some questions survive, become popular and are not closed. Moreover, there is a special "C++ FAQ" section on StackOverflow which aims at not-situation-specific questions. However, most questions I found were on StackOverflow and they're quite old, so rules and mood could have changed. Two question from softwareengineering were asked almost at the same time, but one lives and other is closed. I don't see what's essentially different between them.

Main question being: are questions "when do I use X" on-topic on SoftwareEngineering?

  • I don't think all Programmers are considered Engineers. Engineers architect their solutions with blueprints. Programmers program, blueprints or not.
    – samus
    Commented Mar 6, 2017 at 19:00

2 Answers 2


Main question being: are questions "when do I use X" on-topic on SoftwareEngineering?

Whether a question could be categorized as a "When do I use X?" question is irreverent to determining if it should be closed.

This means claiming that your question is a "when do I use X?" question is not a defense against closing. It's also not a reason to close.

Currently, your question is being considered for closing because it is too broad. You've received criticism that you're soliciting a list, posting a rant, and need to do more research.

You've edited the question in a way that shows improvement. Though I worry that it's still a bit unclear.

You have received up votes and @immibis has posted the start of an answer as a comment that you've yet to respond to. I think with a little work and patience your question can be successful.

But I don't think claiming to be a "when do I use X" question is helping your case.


When use a specific tools something is the basis of a sane conception.

However that type of question might be too broad, because there is probably more than 30k character to explain when to use X.

A best question would be :

  • I have this problem X to solve, I'm going to use Y patter/method to solve it I think using it like this : [exemple of code/diagram of how you intend to use Y to solve X].

This is very likely to be answerable and on-topic.

So instead of asking of the whole list of possible usage, come back when you will have a problem to solve and you're wondering if using this tools (and don't forget to say how you intend to use it) fit to solve your problem efficiently.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .