Re: static or not?
* kwikius:
On Jan 28, 11:50 pm, diligent.sn...@gmail.com wrote:
Looks like the CopyConstructible will be dropped for std::min and
std::max; but for current implementations it is a requirement.
Thank you for the detailed reply.
Could add that its an unnecessary requirement AFAICS. (Perhaps the
return type was changed from value to const reference at some point.)
#include <algorithm>
#include <iostream>
struct my{
explicit my (double v_in) : v (v_in){};
double v;
private :
my ( my const &);
};
inline bool operator <
(my const & lhs, my const & rhs)
{
return lhs.v < rhs.v;
}
int main()
{
my x(1),y(2);
my const & r = std::min(x,y);
Consider instead
my const& r = std::min( x, my(2) );
Note: incorrectly compiles with MSVC 7.1, is diagnosed with g++ 3.4.4
and of course with Comeau.
I first learned about this silly requirement of class having an
accessible copy constructor when (among a great many others) helping to
review Andrei Alexandrescu's Mojo library, a way to implement "move"
construction (library-implemented RVO) in current standard C++. That
attempt sort of stranded on this requirement, that the implementation
should be free to make a temporary copy instead of just providing a
reference directly to the rvalue. Happily, will be removed in C++0x
:-), but, of course, that yields more Potential Dangers, like if the
code above was accepted with std::min implemented with ordinary current
references instead of new-fangled moving rvalue references.
Uh.
I wonder if the code above will be valid in C++0x, and if so, how the
heck the compiler could implement the necessary lifetime extension for
the temporary?
// my z = std::max(x,y); //error private cctor
std::cout << r.v <<'\n';
}
Off-topic, but: Comeau Online's error message is ungrokkable while
g++'s error message is simple and to the point. Difference: that Comeau
implements concept checking. The C++0x technology that's meant to
provide /simpler/ error messages!
Cheers, & hth.,
- Alf
--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?