| > "[if] the concept is satisfied but not modeled, the program is ill-formed, no diagnostic required", Couldn't find anything ressembling this in the section of the standard describing concepts and constraints. The spec is very clear (C++20 7.5.7.6): > The substitution of template arguments into a requires-expression may result in the formation of invalid
types or expressions in its requirements or the violation of the semantic constraints of those requirements. In
such cases, the requires-expression evaluates to false; it does not cause the program to be ill-formed. Maybe the stdlib has different ording, but the stdlib can literally have any wording it wants and could define std::integer to yield 2+2 = 5 without this being an issue. > [ Yes that means in principle if you completely avoid the C++ standard library this doesn't apply to you... ] in just a small library i'm writing, there's already ten-fold the number of concepts than there are defined in the standard library, so I'd say that this does not apply in general ; the stdlib is always an irrelevant special case and not representative of the general case of the language, no matter how hard some wish it. E.g. grepping for 'concept [identifier] =' in my ~ yields 2500 results, with only a small minority of those being the std:: ones. > This might be a reasonable stance if the code wasn't written by people. But it is, and so the code is (or should be) an attempt to express their intent which is in fact semantics and not syntax. I think this is very misguided. I am not programming for humans to process my code, but for computers to execute it. That's what comes first. > Semantically this is indeed what you meant, no, if I type std::totally_ordered, I mean "whatever the language is supposed to do for std::totally_ordered", and exactly nothing else |
That's easy then, if you mean "whatever the language is supposed to do for std::totally_ordered" you could say what that is exactly, right?