I seem to have missed your paper about changing these things.
THAT YOU NEED TO FIX THE BASIC FUCKING TEMPLATE FEATURES
In an attempt to salvage something of value from this thread, what exactly is the problem with doing explicit, full specialization of types and functions that are declared within a class? Was this just an oversight, or was there some real problem with just allowing it to work as expected?
--
---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposal...@isocpp.org.
To post to this group, send email to std-pr...@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/?hl=en.
I can not comment on whether it was originally an oversight, but having proposed it to be changed, and being in the room when EWG approved the change this past meeting - (and assuming my memory is serving me well), I can tell you no one who was present had a good reason for why it was as it was. Let us see what happens in core.
Faisal Vali
I'm usually against trolling but aside from the shocking verbal abuse this guy has leveled at a bunch of hard-working and well-meaning people, I think he has some good arguments which should be considered separately from the ravings that accompanied them.Also, you spelled "genius" wrong.
Generic lambdas don't suffer from a problem here, because the body of the generic lambda is instantiated with the enclosing function template, but presumably the instantiation model for a member template within a local class of a function template would be that the member template is not instantiated at all until a complete set of template arguments for it are known, which may not happen until after the instantiation of the enclosing template has finished and the lexical scope information is gone.
void f(const std::variant<int, char, double> &v)
{
std::visit([](auto &v) { std::cout << v; }, v);
}
void f(const std::variant<int, char, double> &v)
{
struct visitor
{
template<class T>
void operator()(const T &v) const { std::cout << v; }
};
std::visit(visitor{} , v);
}
void f(const std::variant<T1, T2, ...> &v)
{
struct visitor
{
context ctx;
visitor(...) : ctx(...) {}
void operator()(const T1 &v) const; // some specific action for T1
void operator()(const T2 &v) const; // some specific action for T2
template<class T>
void operator()(const T &v) const; // some 'default' action for all other types
};
std::visit(visitor{...} , v);
}
context must be embedded to each lambda.
--
Matthew
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-pr...@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/noi1e5%24hbk%241%40blaine.gmane.org.
Here is use case of the latter that explains why it can't replaced by generic lambda:
void f(const std::variant<T1, T2, ...> &v)
{
struct visitor
{
context ctx;
visitor(...) : ctx(...) {}
void operator()(const T1 &v) const; // some specific action for T1template<class T>
void operator()(const T2 &v) const; // some specific action for T2
void operator()(const T &v) const; // some 'default' action for all other types
};
std::visit(visitor{...} , v);
}
One can argue that in this case you can build the visitor using lambdas + overload(). But in this case
context must be embedded to each lambda.
context ctx;
visitor(...) : ctx(...) {}
void operator()(const T1 &v) const; // some specific action for T1
void operator()(const T2 &v) const; // some specific action for T2
template<class T>void f(const std::variant<T1, T2, ...> &v){
struct visitor{
context ctx;
visitor(...) : ctx(...) {}
void operator()(const T1 &v) const; // some specific action for T1template<class T>
void operator()(const T2 &v) const; // some specific action for T2
void operator()(const T &v) const; // some 'default' action for all other types
};
std::visit([ctx = context{...}](const auto& v) {if constexpr(is_same_v<const T1&, decltype(v)>) {} else if constexpr(is_same_v<const T2&, decltype(v)>) {} else {}}, v);
}
@OP: Please consult a psychologist for your uncontrollable rage, and a counsellor who can explain how your terrible way of trying to get other people to create your desires is completely counterproductive to your chances of achieving them.@mods: Please ban OP.
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-pr...@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CACGiwhHrA99um0yisFpyXExCvMmBr7LaZye%3D%2Bw7Pa5-u_SGpvg%40mail.gmail.com.
As much of course as I do not approve of OP style, I can understand that somebody could feel disappointed with C++17.
It (C++17) is a mediocre (at best) release.
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-pr...@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/942cd080-9c86-466b-bfcd-d2aba3354ecc%40isocpp.org.
>> email to std-proposals+unsubscribe@isocpp.org.
>> To post to this group, send email to std-pr...@isocpp.org.
>> To view this discussion on the web visit
>> https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/942cd080-9c86-466b-bfcd-d2aba3354ecc%40isocpp.org.
>
>
>
>
> --
> Yours sincerely
> Artur Czajkowski
>
> --
> You received this message because you are subscribed to the Google Groups
> "ISO C++ Standard - Future Proposals" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to std-proposals+unsubscribe@isocpp.org.
> To post to this group, send email to std-pr...@isocpp.org.
> To view this discussion on the web visit
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-pr...@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CANPtknwsG1LQfgs8phonZ4mrZmNm%2BogczTpanRMCm0M-EkLy4A%40mail.gmail.com.
@Peter Koch Larsen>still find it to be a
>good release. constexpr if will be a great help to many of us. Also do
>not forget that stuff implemented in a TS. This is much better than
>having nothing.I also agree that is better to have something than nothing, but all the above doesn't mean that this is a good release. It is mediocre, majority of the most important features are not in C++17. This is a HUGE disappointment and I believe those were the features that were 'defining' quality of the C++17.
What we might have here is the same case as the expected C++08 that
turned out to be C++11.
Perhaps we now get both a smaller C++17 and the real revision as C++20.
And we don't have to wait another 3 years for the first part.
A major problem for the future is that now the expectations for C++20
will be MEGA HUGE...
@Nicol Bolas> Between guaranteed elision, structured binding, and `if constexpr`, I think we can put C++17 in the "win" column.
>It's at least as much of a win as C++14.C++14 was a minor release and for a minor release that is a good score, but C++17 was supposed to be a major release yet it feels either like a weak major release or as you pointed out minor release which can be put into 'win' column.
And of course it is a matter of a personal opinion, but the opinion is echoed by many voices, like for example Michael Wong, who himself says in one of his talks, that C++17 is at best OK. One can actually argue now, that OK is a win, but one would also have to listen to that talk given by Michael and hear the way he said the word OK.Anyway, for me C++ for the reasons mentioned in my previous post(if one follows the link provided) is a mediocre release with many major very anticipated features not making into this standard.----On Mon, Jan 2, 2017 at 9:33 PM, Nicol Bolas <jmck...@gmail.com> wrote:On Monday, January 2, 2017 at 4:27:09 AM UTC-5, Arthur Tchaikovsky wrote:--As much of course as I do not approve of OP style, I can understand that somebody could feel disappointed with C++17.
That is a completely different issue. Precisely none of the things that he is complaining about (the ones that were not already fixed) were even considered for C++17.
It (C++17) is a mediocre (at best) release.
That is a matter of opinion. Between guaranteed elision, structured binding, and `if constexpr`, I think we can put C++17 in the "win" column.
It's at least as much of a win as C++14.
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-pr...@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/942cd080-9c86-466b-bfcd-d2aba3354ecc%40isocpp.org.
Yours sincerely
Artur Czajkowski
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-pr...@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CANPOWsfhKvzvSWKwCiEhp5ofXy_95maOvdOCVgz2_2hVAPBGSg%40mail.gmail.com.
If you want certain things ready sooner, you could get involved in the committee process and help out.
On Tuesday, January 3, 2017 at 2:46:21 PM UTC-5, Richard Smith wrote:If you want certain things ready sooner, you could get involved in the committee process and help out.
I don't buy that.
Admittedly, I've never been to a meeting. But from the outside looking in, I don't get the impression that throwing more people at the committee will make things get resolved faster. Would throwing more people at, for example, comparison operator generation have really allowed it to get into C++17? Could more people have resolved the various UCS issues and allowed us to get that in C++17?
I just don't see how throwing more people at the problem will make things move faster. If there is someone who's fundamentally against some aspect of UCS or comparison operators or some such, you're probably only going to find out at an actual meeting. And those only happen 3 times a year.
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposal...@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/08220df1-0163-4887-983e-000416181698%40isocpp.org.
On Tuesday, January 3, 2017 at 2:46:21 PM UTC-5, Richard Smith wrote:If you want certain things ready sooner, you could get involved in the committee process and help out.
I don't buy that.
Admittedly, I've never been to a meeting. But from the outside looking in, I don't get the impression that throwing more people at the committee will make things get resolved faster. Would throwing more people at, for example, comparison operator generation have really allowed it to get into C++17? Could more people have resolved the various UCS issues and allowed us to get that in C++17?
On Tuesday, January 3, 2017 at 9:04:59 AM UTC-5, Arthur Tchaikovsky wrote:@Peter Koch Larsen>still find it to be a
>good release. constexpr if will be a great help to many of us. Also do
>not forget that stuff implemented in a TS. This is much better than
>having nothing.
I also agree that is better to have something than nothing, but all the above doesn't mean that this is a good release. It is mediocre, majority of the most important features are not in C++17. This is a HUGE disappointment and I believe those were the features that were 'defining' quality of the C++17.
I think part of the problem with the "HUGE disappointment" is that people were expecting things from C++17 that were, realistically speaking, not gonna happen.
For example, in mid-2015, Bjarne posted his top-10 list of things he wanted in C++17, and people instantly took that as some kind of measuring tool to decide whether C++17 was good enough or not. But quite frankly, Stroustrup's top-10 list was ridiculously optimistic.
Several topic he cited were things that were just not gonna happen, and that should have been apparent to everyone in mid-2015. Modules and contracts were way too early, both involving a great deal of complexity and precisely zero implementation experience. Those were not going into C++17 and it should have been quite obvious in mid-2015 that this was the case.
On 01/03/2017 09:13 PM, Nicol Bolas wrote:
> Admittedly, I've never been to a meeting. But from the outside
> looking in, I don't get the impression that throwing more people at
> the committee will make things get resolved faster. Would throwing
> more people at, for example, comparison operator generation have
> really allowed it to get into C++17? Could more people have resolved
> the various UCS issues and allowed us to get that in C++17?
What's UCS?
Anyway, for comparison operators specifically, my impression is that
people have different expectations and put different emphasis on
"auto-generation" vs. "opt-in" and "how much existing code must
continue to work". As far as I can see, having someone that
modified a compiler with a specific set of default comparison
rules and ran it on a large codebase would have accelerated the
process.
Even just writing a paper summarizing the developments at the
N meetings where the topic was discussed (including seemingly
minority opinions) would have helped.
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-pr...@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/72c5d05f-7c9d-41cb-bd10-d222d8d15099%40isocpp.org.
People that cares about having a major and good release for 2020, should start now helping on the implementation of those features so that we have more experience
This is another issue. I believe this depends on how you shell your proposal in this forum (or in the official reflectors),
I was talking of the features expected in a release, features that the committee is already interested in, as the list of the 10-features.
On 01/04/2017 09:58 AM, Jens Maurer wrote:
> On 01/04/2017 08:48 AM, Oliver Kowalke wrote:
>> 2017-01-04 8:33 GMT+01:00 Vicente J. Botet Escriba <vicent...@wanadoo.fr <mailto:vicente.botet@wanadoo.fr>>:
>>
>> This is another issue. I believe this depends on how you shell your proposal in this forum (or in the official reflectors),
>>
>>
>> I got the recommendation by a committee member not to discuss the propsal(s) in this forum (endless discussions ...) =:o
>>
>>
>> I was talking of the features expected in a release, features that the committee is already interested in, as the list of the 10-features.
>>
>>
>> for instance coroutines
>
> For coroutines (and as a matter of advertisement), as a personal opinion, I am looking
> for an alternative to the proposal on the table, which (in my opinion) has a too broad
> library / core interface that feels "hackish" to me (need another feature? let's bolt
> it on top).
>
> There was a "resumable functions" proposal (that I didn't look into closely),
> and reportedly, it didn't provide the configurability that the current
> coroutines proposal provides, so I can only assume that it's dead.
As an example for the kind of re-engineering I'm looking for:
P0352R0 Smart References through Delegation: An Alternative to N4477's Operator Dot
seems to be a substantially less involved approach to operator dot compared to
P0416R1 Operator Dot (R3)
I continue to consider overloading of "operator dot" a minor nuisance,
and thus I very much appreciate an approach that is minimally invasive
to core language rules.
Jens
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-pr...@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/586CBA3B.5010903%40gmx.net.
>Please stop complaining about this or that, most of the people that participates on the elaboration of the standard are doing it on their free time.I simply don't understand that argument. I thought people are there not for the money but for the love and passion to language and they don't expect to be paid for it?So following, that people are doing it for free they mustn't be ever criticized for it?I'm sorry but you are being judged by the work you produced not by the money you are being paid for that work. That's how real world works.If your work is of poor quality (and C++17 in many people's eyes is) you (the people who are responsible, the committee) should get criticized and I'm glad to see that happening. Let's stop that 'patting each other on the back' and saying to yourselves that yet again, you did great job. No you didn't. You blew it.As for asking:>Who care if it was a good or a bad release, a minor or major release[...]I'm pretty certain that there are lots of people who actually care a lot.This situation reminds me of a scene where engineer of certain brand of car was arguing with the people (the regular users of that car) that they shouldn't criticize the engineer for his work because they (the users) are incapable of actually making even worse car than that produced by those engineers.I'm sorry but it doesn't work that way. I, as a user, even though I'm unable to have any impact (nor I'm admittedly capable of making it) on a car being produced, have every right to express my disappointment with a car. Is it poorly made? If so I have right to criticize it. And I really don't care how much(or how little) those people involved in production of this car were paid. This (the wages) is totally different issue.And if there are more and more voices from users that the car is of poor quality, well, I think there is something on the matter. Even though engineers think that yet again they've produced something great and pat each other on the back.Same goes for films, clothes, food... If something is of poor quality users have right to criticize it even though the people making it weren't paid as much as they should and despite the fact that the users are incapable of producing such item themselves.
On Wed, Jan 4, 2017 at 9:02 AM, Jens Maurer <Jens....@gmx.net> wrote:
On 01/04/2017 09:58 AM, Jens Maurer wrote:
> On 01/04/2017 08:48 AM, Oliver Kowalke wrote:
>> 2017-01-04 8:33 GMT+01:00 Vicente J. Botet Escriba <vicent...@wanadoo.fr <mailto:vicent...@wanadoo.fr>>:
>>
>> This is another issue. I believe this depends on how you shell your proposal in this forum (or in the official reflectors),
>>
>>
>> I got the recommendation by a committee member not to discuss the propsal(s) in this forum (endless discussions ...) =:o
>>
>>
>> I was talking of the features expected in a release, features that the committee is already interested in, as the list of the 10-features.
>>
>>
>> for instance coroutines
>
> For coroutines (and as a matter of advertisement), as a personal opinion, I am looking
> for an alternative to the proposal on the table, which (in my opinion) has a too broad
> library / core interface that feels "hackish" to me (need another feature? let's bolt
> it on top).
>
> There was a "resumable functions" proposal (that I didn't look into closely),
> and reportedly, it didn't provide the configurability that the current
> coroutines proposal provides, so I can only assume that it's dead.
As an example for the kind of re-engineering I'm looking for:
P0352R0 Smart References through Delegation: An Alternative to N4477's Operator Dot
seems to be a substantially less involved approach to operator dot compared to
P0416R1 Operator Dot (R3)
I continue to consider overloading of "operator dot" a minor nuisance,
and thus I very much appreciate an approach that is minimally invasive
to core language rules.
Jens
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposal...@isocpp.org.
To post to this group, send email to std-pr...@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/586CBA3B.5010903%40gmx.net.
>Please stop complaining about this or that, most of the people that participates on the elaboration of the standard are doing it on their free time.I simply don't understand that argument. I thought people are there not for the money but for the love and passion to language and they don't expect to be paid for it?So following, that people are doing it for free they mustn't be ever criticized for it?I'm sorry but you are being judged by the work you produced not by the money you are being paid for that work. That's how real world works.If your work is of poor quality (and C++17 in many people's eyes is) you (the people who are responsible, the committee) should get criticized and I'm glad to see that happening. Let's stop that 'patting each other on the back' and saying to yourselves that yet again, you did great job. No you didn't. You blew it.
As for asking:>Who care if it was a good or a bad release, a minor or major release[...]I'm pretty certain that there are lots of people who actually care a lot.
W dniu środa, 4 stycznia 2017 11:42:12 UTC+1 użytkownik Arthur Tchaikovsky napisał:>Please stop complaining about this or that, most of the people that participates on the elaboration of the standard are doing it on their free time.I simply don't understand that argument. I thought people are there not for the money but for the love and passion to language and they don't expect to be paid for it?So following, that people are doing it for free they mustn't be ever criticized for it?I'm sorry but you are being judged by the work you produced not by the money you are being paid for that work. That's how real world works.If your work is of poor quality (and C++17 in many people's eyes is) you (the people who are responsible, the committee) should get criticized and I'm glad to see that happening. Let's stop that 'patting each other on the back' and saying to yourselves that yet again, you did great job. No you didn't. You blew it.As for asking:>Who care if it was a good or a bad release, a minor or major release[...]I'm pretty certain that there are lots of people who actually care a lot.This situation reminds me of a scene where engineer of certain brand of car was arguing with the people (the regular users of that car) that they shouldn't criticize the engineer for his work because they (the users) are incapable of actually making even worse car than that produced by those engineers.I'm sorry but it doesn't work that way. I, as a user, even though I'm unable to have any impact (nor I'm admittedly capable of making it) on a car being produced, have every right to express my disappointment with a car. Is it poorly made? If so I have right to criticize it. And I really don't care how much(or how little) those people involved in production of this car were paid. This (the wages) is totally different issue.And if there are more and more voices from users that the car is of poor quality, well, I think there is something on the matter. Even though engineers think that yet again they've produced something great and pat each other on the back.Same goes for films, clothes, food... If something is of poor quality users have right to criticize it even though the people making it weren't paid as much as they should and despite the fact that the users are incapable of producing such item themselves.While I don't disagree with this point of view, I'd rather say that they did good job, just not what was most wished for.I think committee should really prioritize its work, esp. on features that should have been there long time ago: modules, reflection and maybe concepts.
I get it, modules are really ungrateful piece of functionality to work on (due to legacy cruft), but users craved for it for more than 10 years already.Same for reflection and concepts.
On Wednesday, January 4, 2017 at 9:39:30 AM UTC-5, m.ce...@gmail.com wrote:W dniu środa, 4 stycznia 2017 11:42:12 UTC+1 użytkownik Arthur Tchaikovsky napisał:>Please stop complaining about this or that, most of the people that participates on the elaboration of the standard are doing it on their free time.I simply don't understand that argument. I thought people are there not for the money but for the love and passion to language and they don't expect to be paid for it?So following, that people are doing it for free they mustn't be ever criticized for it?I'm sorry but you are being judged by the work you produced not by the money you are being paid for that work. That's how real world works.If your work is of poor quality (and C++17 in many people's eyes is) you (the people who are responsible, the committee) should get criticized and I'm glad to see that happening. Let's stop that 'patting each other on the back' and saying to yourselves that yet again, you did great job. No you didn't. You blew it.As for asking:>Who care if it was a good or a bad release, a minor or major release[...]I'm pretty certain that there are lots of people who actually care a lot.This situation reminds me of a scene where engineer of certain brand of car was arguing with the people (the regular users of that car) that they shouldn't criticize the engineer for his work because they (the users) are incapable of actually making even worse car than that produced by those engineers.I'm sorry but it doesn't work that way. I, as a user, even though I'm unable to have any impact (nor I'm admittedly capable of making it) on a car being produced, have every right to express my disappointment with a car. Is it poorly made? If so I have right to criticize it. And I really don't care how much(or how little) those people involved in production of this car were paid. This (the wages) is totally different issue.And if there are more and more voices from users that the car is of poor quality, well, I think there is something on the matter. Even though engineers think that yet again they've produced something great and pat each other on the back.Same goes for films, clothes, food... If something is of poor quality users have right to criticize it even though the people making it weren't paid as much as they should and despite the fact that the users are incapable of producing such item themselves.While I don't disagree with this point of view, I'd rather say that they did good job, just not what was most wished for.I think committee should really prioritize its work, esp. on features that should have been there long time ago: modules, reflection and maybe concepts.I get it, modules are really ungrateful piece of functionality to work on (due to legacy cruft), but users craved for it for more than 10 years already.Same for reflection and concepts.
Yeah, this is what I mean when I talk about proper judgement of the committee's process. In that this criticism doesn't really show that.
Modules has not been delayed because it is a "really ungrateful piece of functionality to work on". People have been working on modules. A lot of people have been working on modules. We have two in-progress implementations right now. It even has its own study group.
On 01/04/2017 12:35 PM, Dietmar Kühl wrote:
>> On 4 Jan 2017, at 08:54, Jens Maurer <Jens....@gmx.net> wrote:
>> There were several (many) C++ committee meetings where the comparison operators
>> were discussed, sometimes (it seems to me) not loop-free.
A somewhat novel approach would be for == and != to be default
(opt-out) and < and friends to be opt-in. Arguably, anything that
can be copied has a meaningful ==.
2017-01-04 19:12 GMT+01:00 Bo Persson <b...@gmb.dk>:
Because the big players like Google, Microsoft, Intel, NVIDIA ... dominate the standardization (with their own strategic goals).
Those companies let their employees attend each meeting - with more than one person.
That has impact on which papers are selected
and it has impact on the outcome of votes too.
Regarding modules in particular, the #include model has shown its age
since 25+ years, but nobody actually (dared to?) attack the problem
in the sense of trying an implementation and writing a paper until fairly
recently. I'm sure we'd have modules since 5 years or so if someone
had started working on them in earnest 10-15 years ago.
Is even ANY of this retardation fixed in C++17?
On Wednesday, June 12, 2013 at 1:10:52 AM UTC-7, looseont...@gmail.com wrote:Hi,template <class X> void f() {}template <> void f<int>() {}COMPILESstruct S {template <class X> void f() {}template <> void f<int>() {}};--> error: explicit specialization of 'f' in class scopeFUCKING RETARDEDWOW IT REALLY MAKES SENSE THAT THIS WORKS AT GLOBAL SCOPE BUT NOT IN-CLASSstruct S {template <class X> struct Inner {};template <> struct Inner<int> {};};--> error: explicit specialization of 'Inner' in class scopeFUCKING RETARDEDstruct S {template <class X, class = void> struct Inner {};template <class bullshit> struct Inner<int, bullshit> {};};WOW, RETARDS, WORKS WITH A STUPID-RETARDED WORKAROUNDstruct S {template <class X, class=void> void f() {}template <class bullshit> void f<int, bullshit>() {}};--> function template partial specialization is not allowedFUCKING RETARDEDWOW THE RETARDED WORKAROUND DOESN'T WORK FOR FUNCTIONStemplate <class X> void f(X x) {}template <class X> void f(X* x) {}OH, OK THIS GOODtemplate <class X, class Y> void f() {}template <class Y> void f<int, Y>() {}--> function template partial specialization is not allowedFUCKING RETARDED.I don't even want to hear 1 piece of bullshit out of a single one of you people's mouths about this one.If you give me one piece of bullshit, you're a fucking n00b.Every one of these things is used for metaprogramming.After 15 years of awareness about these problems, nothing was fixed.And now with C++14, yet another oversight release, we're heading for 20 years of fucking retardation.Thank you standards body people for your retarded level of awareness, you fucking retards.Can you fix the holes you fucking retards?
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/76e37e62-147b-4bec-8ab5-15f0051787b3%40isocpp.org.
W dniu środa, 4 stycznia 2017 17:01:20 UTC+1 użytkownik Nicol Bolas napisał:On Wednesday, January 4, 2017 at 9:39:30 AM UTC-5, m.ce...@gmail.com wrote:W dniu środa, 4 stycznia 2017 11:42:12 UTC+1 użytkownik Arthur Tchaikovsky napisał:>Please stop complaining about this or that, most of the people that participates on the elaboration of the standard are doing it on their free time.I simply don't understand that argument. I thought people are there not for the money but for the love and passion to language and they don't expect to be paid for it?So following, that people are doing it for free they mustn't be ever criticized for it?I'm sorry but you are being judged by the work you produced not by the money you are being paid for that work. That's how real world works.If your work is of poor quality (and C++17 in many people's eyes is) you (the people who are responsible, the committee) should get criticized and I'm glad to see that happening. Let's stop that 'patting each other on the back' and saying to yourselves that yet again, you did great job. No you didn't. You blew it.As for asking:>Who care if it was a good or a bad release, a minor or major release[...]I'm pretty certain that there are lots of people who actually care a lot.This situation reminds me of a scene where engineer of certain brand of car was arguing with the people (the regular users of that car) that they shouldn't criticize the engineer for his work because they (the users) are incapable of actually making even worse car than that produced by those engineers.I'm sorry but it doesn't work that way. I, as a user, even though I'm unable to have any impact (nor I'm admittedly capable of making it) on a car being produced, have every right to express my disappointment with a car. Is it poorly made? If so I have right to criticize it. And I really don't care how much(or how little) those people involved in production of this car were paid. This (the wages) is totally different issue.And if there are more and more voices from users that the car is of poor quality, well, I think there is something on the matter. Even though engineers think that yet again they've produced something great and pat each other on the back.Same goes for films, clothes, food... If something is of poor quality users have right to criticize it even though the people making it weren't paid as much as they should and despite the fact that the users are incapable of producing such item themselves.While I don't disagree with this point of view, I'd rather say that they did good job, just not what was most wished for.I think committee should really prioritize its work, esp. on features that should have been there long time ago: modules, reflection and maybe concepts.I get it, modules are really ungrateful piece of functionality to work on (due to legacy cruft), but users craved for it for more than 10 years already.Same for reflection and concepts.
Yeah, this is what I mean when I talk about proper judgement of the committee's process. In that this criticism doesn't really show that.
Modules has not been delayed because it is a "really ungrateful piece of functionality to work on". People have been working on modules. A lot of people have been working on modules. We have two in-progress implementations right now. It even has its own study group.
It is really hard to believe that as you say given 'a lot of people' working on modules and a decade of time the reason we have no modules support in C++ standard is because 'it is hard'.
I'm following the isocpp forum, website, read most proposals, watch C++ conference videos and follow Clang development mailing lists and really don't see that horde of people working on this feature.
I see mainly Gabriel Dos Reis and Richard Smith - hopefully there are way more people working 'behind the scenes'.
But even if there are, one just cannot excuse lack of this feature for such a long time by saying 'it is hard'. These guys are brilliant engineers, I refuse to believe they couldn't find a solution for such a long time.
How come clang have modules support for years?!
From my point of view, the problem is not technical. It's about management - resources, planning and decision making.
Maybe 'management' part got better in recent years, but all the previous years are lost.
People are just tired of hearing yet again that we won't have modules, reflection or concept in next C++ version, and that's why (at least partially) they're saying that C++17 is a let-down.
Again about the priorities. I see many proposals, most of them seem to live their own lives - i.e. there doesn't seem to be any push from committee to finish them, who cares if they miss next version deadline.
I've yet to see a document stating what is committee's overall vision on C++ near future.
Every time you have to do `using std::swap` before `swap`ing some object, you're doing something that UCS ought to handle. The same goes for global `begin`, `end`, `size`, etc. This is a growing problem, one with Ranges TS is only going to exacerbate. And "sustained reservations" don't actually fix problems.
This is where I think it would be good to be able to separate technical reservations (ie: the feature is broken and/or doesn't work to achieve its stated goal) from other reservations. And that if a feature is going to solve a problem that the language really needs to solve, then I believe that non-technical reservations should not be counted as strongly as technical reservations.
Now, that's not to say that the concerns about UCS were all non-technical. There were good technical reasons to ditch member-to-global transformation (though I really wish someone had taken the time to work around them). But looking at the minutes from Jacksonville, the arguments against it don't seem to be technical so much as fear.
And where was all that fear when list-initialization's rules were being put together ;)
Essentially, the committee doesn't focus so much on problems as proposals. Motivations are important only in measuring whether a proposal achieves something worthwhile; the idea that a proposal could be "too important to fail" (or at least "too important to fail for any reason other than serious technical flaws") is not dealt with. And that isn't good.
Regarding modules in particular, the #include model has shown its age
since 25+ years, but nobody actually (dared to?) attack the problem
in the sense of trying an implementation and writing a paper until fairly
recently. I'm sure we'd have modules since 5 years or so if someone
had started working on them in earnest 10-15 years ago.
I think this really needs to be emphasized.
Back in 2007, modules was being talked about. But there wasn't really an implementation of it anywhere. Not even as a proof-of-concept. Even C++11's insane concept stuff had a proof-of-concept implementation. But modules didn't seem to be moving towards an implementation.
What makes me feel like modules is really going to happen is not the fact that there's a proposal. It was when Microsoft basically said, "hey, we're implementing this. Right now. Our compiler's next version will have a first-pass implementation of it."
For highly complex proposals like modules, implementations are absolutely key for getting them moving forward. And this is a good thing. It makes sure that complicated proposals can't just create things out of whole cloth without proving that they work.
This is also unfortunately the reason why P0057 is moving forward (though in a TS), while any alternatives are at present just ink on a page. Because someone is actually implementing P0057, while nobody even has design agreement on an alternative, let alone a genuine implementation. Outside of P0099 of course, but that's a pure-library thing.
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-pr...@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/f9259329-7e00-4838-a365-e22cd2ea6879%40isocpp.org.
Every time you have to do `using std::swap` before `swap`ing some object, you're doing something that UCS ought to handle. The same goes for global `begin`, `end`, `size`, etc. This is a growing problem, one with Ranges TS is only going to exacerbate. And "sustained reservations" don't actually fix problems.
The counterargument to that is that using unqualified names as extension points is a major mistake that significantly harms the benefits that namespaces are supposed to provide. ADL for non-operators is harmful to the language,
and UCS makes that harm significantly worse by applying it in more cases.
The full UCS proposal also makes lots of previously-safe routine library maintenance (such as adding member functions) a potential source-breaking change for API consumers (which might previously have been calling their own declarations of non-members via member syntax). The half-UCS approach at least only affects the cases that are already maligned by ADL, but it still has this characteristic that extending a library in natural ways becomes a potentially breaking change for API consumers. We do not need more features in C++ that make it hard to maintain large-scale codebases.
What we really *should* add is a language feature that provides support for sane, principled, named, scoped extension points.
VicenteUCS isn't that.
Especially in complex and where controversial approaches are proposed (like e.g. coroutines) it is almost impossible to assess the merits if the authors are not there to defend the paper.
On 4 January 2017 at 19:14, Nicol Bolas <jmck...@gmail.com> wrote:On Wednesday, January 4, 2017 at 3:49:00 PM UTC-5, Jens Maurer wrote:
Sometimes, a feature is discussed and progressed, but a substantial part
of the committee has sustained reservations against the shape of the
feature, thus failing to achieve consensus. This happened with defaulted
comparison operators (until now) and unified call syntax.
I think these are probably my biggest concerns, in terms of standardization. Particularly for UCS.
I say that because, while the "sustained reservation" people may have a point, that point cannot change the fact that we need UCS. One form, the other, or both. But this is functionality that we as C++ users absolutely need.The people with sustained reservations obviously disagree, or at least think the harm this feature does to the language outweighs the benefit. And the current levels of adoption of the standard clearly demonstrate that we do not *need* this feature, or indeed any feature. It has merit, sure, but that must be weighed against other things.
Every time you have to do `using std::swap` before `swap`ing some object, [...]
The counterargument to that is that using unqualified names as extension points is a major mistake that significantly harms the benefits that namespaces are supposed to provide. ADL for non-operators is harmful to the language, and UCS makes that harm significantly worse by applying it in more cases.The full UCS proposal also makes lots of previously-safe routine library maintenance (such as adding member functions) a potential source-breaking change for API consumers (which might previously have been calling their own declarations of non-members via member syntax). The half-UCS approach at least only affects the cases that are already maligned by ADL, but it still has this characteristic that extending a library in natural ways becomes a potentially breaking change for API consumers. We do not need more features in C++ that make it hard to maintain large-scale codebases.What we really *should* add is a language feature that provides support for sane, principled, named, scoped extension points. UCS isn't that.
This is where I think it would be good to be able to separate technical reservations (ie: the feature is broken and/or doesn't work to achieve its stated goal) from other reservations. And that if a feature is going to solve a problem that the language really needs to solve, then I believe that non-technical reservations should not be counted as strongly as technical reservations.I have not heard any non-technical reservations be brought up as counterarguments to the UCS proposal.
On Wed, Jan 4, 2017 at 7:55 PM, Richard Smith <ric...@metafoo.co.uk> wrote:On 4 January 2017 at 19:14, Nicol Bolas <jmck...@gmail.com> wrote:On Wednesday, January 4, 2017 at 3:49:00 PM UTC-5, Jens Maurer wrote:
Sometimes, a feature is discussed and progressed, but a substantial part
of the committee has sustained reservations against the shape of the
feature, thus failing to achieve consensus. This happened with defaulted
comparison operators (until now) and unified call syntax.
I think these are probably my biggest concerns, in terms of standardization. Particularly for UCS.
I say that because, while the "sustained reservation" people may have a point, that point cannot change the fact that we need UCS. One form, the other, or both. But this is functionality that we as C++ users absolutely need.The people with sustained reservations obviously disagree, or at least think the harm this feature does to the language outweighs the benefit. And the current levels of adoption of the standard clearly demonstrate that we do not *need* this feature, or indeed any feature. It has merit, sure, but that must be weighed against other things.Every time you have to do `using std::swap` before `swap`ing some object, [...]The counterargument to that is that using unqualified names as extension points is a major mistake that significantly harms the benefits that namespaces are supposed to provide. ADL for non-operators is harmful to the language, and UCS makes that harm significantly worse by applying it in more cases.The full UCS proposal also makes lots of previously-safe routine library maintenance (such as adding member functions) a potential source-breaking change for API consumers (which might previously have been calling their own declarations of non-members via member syntax). The half-UCS approach at least only affects the cases that are already maligned by ADL, but it still has this characteristic that extending a library in natural ways becomes a potentially breaking change for API consumers. We do not need more features in C++ that make it hard to maintain large-scale codebases.What we really *should* add is a language feature that provides support for sane, principled, named, scoped extension points. UCS isn't that.I'll throw in my two cents. From the above it sounds like Richard's position is roughly "anti-UCS, anti-ADL, pro-customization-points". My own position is roughly "anti-UCS, pro-ADL, pro-customization-points."
I love ADL. It seems very straightforward to me; I believe I understand it; I appreciate that it makes operator overloading Just Work (and keeps plain old functions working the same way as operator functions, by applying the same ADL rules to both).
I appreciate that in C++98 it allowed us to reach into other namespaces to implement customization points like 'swap' at all, even though I believe that we have learned a lot about better interfaces for customization points in the intervening ~20 years.For me, ADL is "just confusing enough". Adding UCS to the mix would make the situation so much more confusing that I think I would be unhappy with it. (Similarly, I think I am unhappy with class template constructor type deduction in C++17.) And what's the point of UCS? Just to allow one syntax to "do everything"? I like having different syntaxes for different purposes — having code-that-does-X look fundamentally different from code-that-does-Y.
Re customization points, I would love it if std::swap(x,y) just Did The Right Thing for any x and y (by hiding the ADL inside itself). But adding UCS won't help with that problem at all.This is where I think it would be good to be able to separate technical reservations (ie: the feature is broken and/or doesn't work to achieve its stated goal) from other reservations. And that if a feature is going to solve a problem that the language really needs to solve, then I believe that non-technical reservations should not be counted as strongly as technical reservations.I have not heard any non-technical reservations be brought up as counterarguments to the UCS proposal.There, I just made a couple. ;)
But then I ended by saying "adding UCS won't help with [customization points] at all", which Nicol is counting as a technical reservation: the feature doesn't work to achieve its stated goal, if UCS's stated goal is really to help with customization points. (I'm sure there must be other stated goals too.)my $.02,–Arthur
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-pr...@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAN-YmNORbWVB_ffuu%3Dh8o%2BMwUwW44AOSmnRXO0g50c_A6XXTOQ%40mail.gmail.com.
[...]
For me, ADL is "just confusing enough". Adding UCS to the mix would make the situation so much more confusing that I think I would be unhappy with it. (Similarly, I think I am unhappy with class template constructor type deduction in C++17.) And what's the point of UCS? Just to allow one syntax to "do everything"? I like having different syntaxes for different purposes — having code-that-does-X look fundamentally different from code-that-does-Y.
On Wed, Jan 4, 2017 at 7:55 PM, Richard Smith <ric...@metafoo.co.uk> wrote:On 4 January 2017 at 19:14, Nicol Bolas <jmck...@gmail.com> wrote:On Wednesday, January 4, 2017 at 3:49:00 PM UTC-5, Jens Maurer wrote:
Sometimes, a feature is discussed and progressed, but a substantial part
of the committee has sustained reservations against the shape of the
feature, thus failing to achieve consensus. This happened with defaulted
comparison operators (until now) and unified call syntax.
I think these are probably my biggest concerns, in terms of standardization. Particularly for UCS.
I say that because, while the "sustained reservation" people may have a point, that point cannot change the fact that we need UCS. One form, the other, or both. But this is functionality that we as C++ users absolutely need.The people with sustained reservations obviously disagree, or at least think the harm this feature does to the language outweighs the benefit. And the current levels of adoption of the standard clearly demonstrate that we do not *need* this feature, or indeed any feature. It has merit, sure, but that must be weighed against other things.Every time you have to do `using std::swap` before `swap`ing some object, [...]The counterargument to that is that using unqualified names as extension points is a major mistake that significantly harms the benefits that namespaces are supposed to provide. ADL for non-operators is harmful to the language, and UCS makes that harm significantly worse by applying it in more cases.The full UCS proposal also makes lots of previously-safe routine library maintenance (such as adding member functions) a potential source-breaking change for API consumers (which might previously have been calling their own declarations of non-members via member syntax). The half-UCS approach at least only affects the cases that are already maligned by ADL, but it still has this characteristic that extending a library in natural ways becomes a potentially breaking change for API consumers. We do not need more features in C++ that make it hard to maintain large-scale codebases.What we really *should* add is a language feature that provides support for sane, principled, named, scoped extension points. UCS isn't that.I'll throw in my two cents. From the above it sounds like Richard's position is roughly "anti-UCS, anti-ADL, pro-customization-points". My own position is roughly "anti-UCS, pro-ADL, pro-customization-points."
I love ADL. It seems very straightforward to me; I believe I understand it; I appreciate that it makes operator overloading Just Work (and keeps plain old functions working the same way as operator functions, by applying the same ADL rules to both). I appreciate that in C++98 it allowed us to reach into other namespaces to implement customization points like 'swap' at all, even though I believe that we have learned a lot about better interfaces for customization points in the intervening ~20 years.
For me, ADL is "just confusing enough". Adding UCS to the mix would make the situation so much more confusing that I think I would be unhappy with it. (Similarly, I think I am unhappy with class template constructor type deduction in C++17.) And what's the point of UCS? Just to allow one syntax to "do everything"? I like having different syntaxes for different purposes — having code-that-does-X look fundamentally different from code-that-does-Y.
Re customization points, I would love it if std::swap(x,y) just Did The Right Thing for any x and y (by hiding the ADL inside itself). But adding UCS won't help with that problem at all.
Since C++ needs a solution to those problems, unless some other solution arises that also solves them, we should move forward with what we have now for the good of the language.
These kinds of problem-based compromises are the sorts of things that I feel are lacking from the committee at this time. The recognition that C++ really needs something to deal with X, and proposal Y deals with X, so unless there is a proposal Z that also solves X, then you should support Y.
I know that sounds ironic, considering my opposition to Concepts TS integration into C++17. But that's because I feel the proposal hasn't cooked enough yet, that it needs refactoring. Not because I'm opposed to it on a fundamental level.I love ADL. It seems very straightforward to me; I believe I understand it; I appreciate that it makes operator overloading Just Work (and keeps plain old functions working the same way as operator functions, by applying the same ADL rules to both). I appreciate that in C++98 it allowed us to reach into other namespaces to implement customization points like 'swap' at all, even though I believe that we have learned a lot about better interfaces for customization points in the intervening ~20 years.For me, ADL is "just confusing enough". Adding UCS to the mix would make the situation so much more confusing that I think I would be unhappy with it. (Similarly, I think I am unhappy with class template constructor type deduction in C++17.) And what's the point of UCS? Just to allow one syntax to "do everything"? I like having different syntaxes for different purposes — having code-that-does-X look fundamentally different from code-that-does-Y.
The problem with this kind of thinking is that it encourages the proliferation of syntaxes for doing the same thing, but in ways whose differences are things that only experts know about. Because at the end of the day, most users do not want to, or need to, think about the distinction between member call and non-member call.Re customization points, I would love it if std::swap(x,y) just Did The Right Thing for any x and y (by hiding the ADL inside itself). But adding UCS won't help with that problem at all.
UCS doesn't solve the problem of writing a `std::swap` that calls the right function. But that's not its goal. Its goal is to let `swap(x, y)` by itself call the right function, to bypass `std::swap` entirely.
UCS helps with customization points by making them obsolete ;)
It should also be noted that your "Did The Right Thing" for `std::swap` still requires me to write both member-`swap` and non-member `swap` functions (since you said `std::swap` should use ADL to find the right `swap` function). ADL-based customization points require lots of needless repetition.
One of the main purposes of UCS in this regard is to promote DRY principles: you write one function. You choose for yourself whether it is a member or non-member function, based on your needs. And the user has a way to call it, regardless of how you choose to expose it.
Or do you really like writing the 12 functions it takes to make a proper ADL-based container class?
--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-pr...@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/fb3436c7-1d7b-478f-b476-50f2a2ef09eb%40isocpp.org.