Meta Stack Exchange is where users like you discuss bugs, features, and support issues that affect the software powering all 158 Stack Exchange communities.

What is meta?
Here's how it works:
  1. Any Stack Exchange user can ask a question
  2. The community provides support, votes on ideas, and reports bugs
  3. Your voice helps shape the way Stack Exchange operates

I had a clear question looking for the documentation on the C++ STL exception-safety/guarentees, and it was closed by 1 moderator with no explanation as "not constructive", and I'm completely baffled as to why.

Could someone (maybe the mod?) please explain why?

share|improve this question

closed as off-topic by Robert Cartaino Aug 20 '14 at 13:41

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "This question pertains only to a specific site in the Stack Exchange Network. Questions on Meta Stack Exchange should pertain to our network or software that drives it as a whole, within the guidelines defined in the help center. You should ask this question on the meta site where your concern originated." – Robert Cartaino
If this question can be reworded to fit the rules in the help center, please edit the question.

The problem with this question is:

I'm looking for the authoritative source of this information itself -- or preferably, a free version of the source (e.g. a draft of the standard) where I can more or less treat as official.

You're asking the community to find something for you rather than solve an actual programming problem. The question might be better suited to the C++ Lounge chat room.

I addition to that I had delete a heap of bickering in the comments which is usually a red flag regarding questions that aren't really suitable for the site.

Finally, all I'm seeing in the answers are copy-pasting lists of stuff that can be found somewhere else.

The question is a "find me this stuff" question, not "help me solve this problem".

share|improve this answer
"You're asking the community to find something for you" that was definitely not my intention; I don't see where you got that idea. First, it is a programming problem -- C++, STL, etc. are complex and people need the actual documentations that govern them. If I have to ask for every single detail on SO, there are going to be like 20 more questions coming up in the next few days. Second, what's wrong with asking them to show me the source of their information instead (if they know the answer, they must've gotten it from somewhere), so I can look things up by myself? (Give a man a fish..) – Mehrdad Jul 28 '12 at 17:25
"All I'm seeing in the answers are copy-pasting lists of stuff" Did you just see a few lists, or did you read the answers? People copy-pasted because they thought it was helpful (because everyone says "don't just post a link", which I'm OK with myself). What I was looking for was something like the PDF Johan linked to, and it seems to be an excellent source of the information I needed so far, only it's a little bit incomplete. That link is what constitutes the answer to my question, and it seems pretty darn helpful to have the link, no? – Mehrdad Jul 28 '12 at 17:58
@Mehrdad: You asked for an "authoritative source"; that's a direct quote from your question. That PDF has absolutely zero authority over the behavior of C++ and its standard library. It is no more authoritative than Wikipedia. Perhaps the word you were looking for was "comprehensive". – Nicol Bolas Jul 28 '12 at 22:56
@NicolBolas: Would you mind avoiding cross-posting please? I already got a notification; I saw your answer and was about to respond on your own answer (edit: done). Posting it everywhere on my radar isn't going to help the situation. – Mehrdad Jul 28 '12 at 23:09
@Kev: Btw, I forgot to mention -- thanks for responding so promptly here. :) As much as I completely disagree with the answer, it's still helpful that you responded, especially so quickly. – Mehrdad Jul 29 '12 at 0:29
@Mehrdad - you are very welcome. – Kev Jul 29 '12 at 2:17

Here's one reason: your question as stated is nonsense.

The only "authoritative source " that gives a "comprehensive" explanation of "the exception guarantees given by STL containers" is the Standard for Programming Language C++. That's it. The information you want is there, as this is the fundamental, authoritative source which defines how C++ and its standard libraries work.

Or to put it another way, if it's not there, it does not exist.

Your question is essentially "I read the standard but I can't understand it." And while we can interpret the standard, the only correct answer to your question as asked is the standard, which you read and dismissed.

Your question thus becomes unanswerable because you removed the only correct answer from the list of possible answers. It's like saying, "I want the authoritative standard for US laws, but you can't actually use the laws themselves," or "I want the definitive source for this scientific principle, but you can't show me actual peer-reviewed papers or research."

It's a negative tautology: you assume that the only correct answer is wrong. Since the only correct answer is not a legitimate answer to your question, you have rendered your question unanswerable. Therefore, the question is "not constructive."

Also, your question is a "link me to documentation" question, not a "tell me how this works" question. The former are also "not constructive."

share|improve this answer
It's worth pointing out that a lot of these arguments can oftentimes be dispelled with a few quick edits to the question to make it conform to the guidelines. If it's a borderline question, just edit it and improve it, even if you don't personally think it needs to be improved. – jmort253 Jul 28 '12 at 22:34
If I'm looking for something that doesn't exist, then someone can just post an answer and simply say it doesn't exist. It answers the question directly, and I love direct, concrete answers, even if they're really short (just check my question history if you don't believe me). If I knew 100% that the answer would be positive/negative, then I would have already known where (not) to look, and the question would have been pointless. – Mehrdad Jul 28 '12 at 23:03
On the other hand, people had started commenting about how "STL is not part of the C++ standard", etc... I didn't know if that's true when I asked my question, and I still don't know if it is or not (is it a separate document?) but my point is, there's nothing that makes it so obvious there is no other document, as obvious as it is to you. Again, if there isn't, then you can just answer and say I'm wrong. There's nothing wrong with that (or with me being wrong.) It's plain and simple, direct and succinct, constructive and helpful. Why single-handedly close the question? – Mehrdad Jul 28 '12 at 23:05
Finally, I consider Stroustrup's appendix to the standard to be just as "authoritative" as a draft of the C++ standard which I explicitly allowed in my question, assuming you actually read the question. So, someone actually did post a link to such a document, and I don't really understand what you mean by "it doesn't exist". – Mehrdad Jul 28 '12 at 23:13
@Mehrdad: I consider Stroustrup's appendix to the standard to be just as "authoritative" And therein lies the problem. There is exactly one authority on C++: ISO/IEC 14882, The Standard for Programming Language C++. That's the only document that can objectively be called "authoritative". There's nothing in your question that clarifies or explains what you consider "authoritative"; your link to another question on the site was more or less irrelevant to this point. So your question is either a negative tautology or poorly stated. Or, again, a "point me to the docs" question. – Nicol Bolas Jul 28 '12 at 23:20
(1) You're engaging in exactly the same kind pedantic commentary that Kev actually deleted. Every single person who commented on my question clearly understood what I was looking for (and, btw, one person who saw the comments got annoyed and told everyone to stop making pointless pedantic comments about how STL isn't part of C++ -- and that person was not me). So, really, I really don't think it was that difficult to infer that a document by Stroustrup would have sufficed -- quite a few people already managed it. (2): "You're actually 100% wrong" is a perfectly good answer. – Mehrdad Jul 28 '12 at 23:26
@Mehrdad: "So, really, I really don't think it was that difficult to infer that a document by Stroustrup would have sufficed -- quite a few people already managed it." This isn't the first time your miscommunication has lead to lengthy comment threads. Here's a question of yours where vital information like "how long the destruction is taking" was put into comments instead of the question itself. If a lot of people are having problems with your questions, then that's clearly a problem with you and not them. – Nicol Bolas Jul 28 '12 at 23:35
Yes, I made that mistake -- for 2 hours. And yet, not only did I promptly correct it, I also stripped down the test case (it wasn't easy, trust me) and posted my timing in the question itself, for anyone to reproduce. On the other hand, you're the only person who got confused by this question. Please stop trying to justify yourself by taking something completely irrelevant out of context and then telling me I have problems. All while continuously ignoring my comment that "You're wrong" is a completely useful answer. It's really not helping your answer. – Mehrdad Jul 28 '12 at 23:42
@Mehrdad: That question, as it stands right now, still doesn't state how long deleting the vector of strings took. You simply say "grab some coffee." The correct thing to say would be "about 3 seconds", but you can only find that out by looking at the comment thread. People will often use hyperbole in describing problems, but without the exact numbers, there's no way to know whether you're having reasonable slowdown that you think is unreasonable, or truly unreasonable slowdown. That's why you had to hunt down the problem yourself. – Nicol Bolas Jul 28 '12 at 23:54
Geez, are you not reading? "This took 3.95 seconds on my laptop. (the shuffling is critical)", is what I have written immediately before the code? – Mehrdad Jul 28 '12 at 23:55
@Mehrdad: OK, it's there. That's still a pretty random place to put vital information. The hyperbole still remains, and that's exactly where you should put the concrete information. You seem to have an aversion to actually changing your questions; instead, you just put edit sections in various places. That's not helping to make the question better; it makes the question harder to follow because information is not in its natural place. – Nicol Bolas Jul 28 '12 at 23:58
"OK, it's there." Glad you actually put in a bit of effort to read my question. "That's still a pretty random place to put vital information." Yes, right above the code really is a random place to put the timing, isn't it? Especially when I explicitly write that I've updated it, so you don't miss it? Hope you enjoyed this, because obviously you're putting zero effort into understanding the irrelevant things you're misquoting out of context, just to justify yourself in telling people they have problems. I'm done with this nonsensical discussion. – Mehrdad Jul 29 '12 at 0:09

I've seen this happen over the past several months, closing a question as not-constructive appears to be used as a way to stem the tide of flags being added to the flag queue. Your question certainly doesn't fit the legacy interpretation of the reason imo, given its C++ background. Kev's answer made it clear that plenty of flags where thrown about.

Maybe it's okay to automatically turn a controversial question into a non-constructive one. I personally have my doubts, the threshold for being able to flag is too low for my taste. 15 rep is not much to yield this new weapon and I haven't seen any direct evidence that it takes more than one such flag. Mostly because it isn't visible btw, I wish it was.

But that's an entirely different discussion. Avoid this kind of outcome by not arguing in the comments. Or whatever else happened to generate the flags, that's no longer visible.

share|improve this answer
To add some context regarding the comments: there was a discussion basically about how STL isn't part of the standard, etc. (I avoided the discussion myself as much as I could). There was also a couple comments of deleted from one of the answers (from both me and the poster, IIRC), which was understandable since they were 'noisy'... but the comments were helpful in understanding the answer, so it wasn't totally necessary IMO. – Mehrdad Jul 28 '12 at 19:20
Well, that's very common too. Any question that involves the C++ standard tends to generate a lot of comments that not infrequently get deleted. It is a cantankerous standard that moderators don't have a lot of patience for. Conversely, plenty of [C++] users have no patience with the moderators. Strange that there isn't a Area51 proposal yet. Anyhoo, it's opened again, you're ahead. – Uphill Luge Jul 28 '12 at 21:39

I think it has been closed because you are asking for, "the authoritative source of the exception guarantees given by STL containers."

The problem I see is with the authoritative source, which would probably give you a link to that authoritative source, if it exists and it is online, as I am sure nobody would entirely quote what reported by that source.
More probably, anybody is going to give a partial answer about what he/she thinks be the exception guarantees basing on his/her expertise.

The closing reason suits your question as giving a link to, or finding an authoritative source doesn't require any expertise.
Alternatively, I would have used "not a real answer" as closing reason because the question is too broad. If you restricted the question to a specific STL container, maybe the question would have been more welcome. The FAQ then says:

Your questions should be reasonably scoped. If you can imagine an entire book that answers your question, you're asking too much.

The fact you are expecting an answer to full answer about any STL container/algorithm is evident from a comment you left:

That doesn't look like it has everything I need… for example, what about std::rotate? Is it like std::copy? Or is it stronger or weaker?

The same comment could be said for an answer that replies about that, but forgets other STL containers/algorithms. There will probably be something that is not said from an answer, as nobody is going to give a comprehensive answer for such topic.

share|improve this answer
So you have rathered I post 20 questions about each algorithm and container I need information about, instead of asking where to find that information? Because unlike the language specification, I really have (had) no idea where to look for the STL information. – Mehrdad Jul 28 '12 at 17:33
If you would also post actual code you are using, yes. Too broad questions are rather difficult to handle, on Stack Exchange; that is the reason there is the "not a real question" closing reason, and the FAQ talks of scoped questions based on actual problems that you face. – kiamlaluno Jul 28 '12 at 17:36
You could also ask about the difference between exception guarantees given from two STL containers. It is not really necessary to ask a question for each of the STL containers you are interested to, as long as the question is not about all the exception guarantees of all the STL containers, nor an authoritative source. – kiamlaluno Jul 28 '12 at 17:40
Sorry but have you heard of the "give a man a fish..." saying? I really don't understand how you think it's "too broad" to ask, "where can I find some fish?" instead of asking people to give me a new fish every time I need to eat. How is it not more productive + less effort on everyone's part if they just mention where I can look things up instead of looking up every detail for me over and over and over again? – Mehrdad Jul 28 '12 at 17:41
"Give a man a fish…" would also mean that, instead of giving you the answer, I should give you the link where the answer to your question, or similar questions is given; I would not teach you how to find your answer, if I give you the answer. That is not the kind of answers that is welcome on Stack Exchange. The equivalent of your answer is not "Where can I find some fish?" but "Where can I find all the fish?" as you are asking for all the STL containers, not some of them. – kiamlaluno Jul 28 '12 at 17:46
sigh your reasoning makes absolutely no sense to me (I feel like you're taking the FAQ way too literally and without context) but thanks for trying anyway... – Mehrdad Jul 28 '12 at 17:49
I think it's all about asking a too broad question; the FAQ gives a clear example of when a question is too broad: "If you can imagine an entire book that answers your question, you're asking too much." Now, in your case, a book about STL container would probably answering your question, since you are asking about all the STL containers. – kiamlaluno Jul 28 '12 at 17:52
I think you're completely misunderstanding the FAQ. The way I understand it, it's to prevent questions like "How do I write an OS??", "Show me how to write a compiler!!!"... stuff that can't be meaningfully answered in a single post (and which might need entire book(s) to explain). But my question is meaningfully answerable here (heck, there are already two great answers!) so I don't see how in the world that FAQ applies to my question. It looks to me like you're just quoting the FAQ without considering the context which prompted it. – Mehrdad Jul 28 '12 at 18:01
There are two great answers, but you have already said "this answer doesn't completely answer my question." The too broad part is also thought to avoid questions similar to "How do I write a Drupal module?" or "What is a Drupal module?" What you said still applies to your question, as there will not be a single answer that entirely answers your question, considering that you are interested on any STL container/algorithm. Too broad question is a too broad question; if the answer to the question is more than X lines, then the question is probably too broad. There isn't any context to apply. – kiamlaluno Jul 28 '12 at 18:09
"There isn't any context to apply." is a very red flag for me on your part. Every rule has context. "If the answer to the question is more than X lines, then the question is probably too broad." I disagree with your reasoning so strongly that I'm not even going to continue discussing this here, there's no way it'll make sense to me. Thanks for trying to help. – Mehrdad Jul 28 '12 at 18:11
Just to be more clear "What is a Drupal module?" and "How do I write a Drupal module?" are surely answerable, but the questions are still too broad. Instead of asking "How do I write a Drupal module?" it would be better to ask "How do I achieve [X] using a Drupal module?" – kiamlaluno Jul 28 '12 at 18:14

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