Сообщение Они сделали дерьмо опять от 18.05.2020 20:33
Изменено 19.05.2020 7:39 Шахтер
Они сделали дерьмо опять
Комитет по стандартизации пора расстрелять. Такое ощущение, что эти дебилы никогда не писали софт сложнее hello world.
Кстати, обратите внимание, какие замечательные короткие имена нам предлагают использовать для констант. На пол-экрана. А чо такова, мониторы-то теперь широкие?
Вылечить можно так. Хакаем заголовок <compare>.
К себе добавляем что-нибудь по вкусу.
Теперь можно спокойно работать.
std::strong_ordering cmp = .... ;
if( cmp ) // error
{
}
else
{
Printf(Con,"equal\n");
}
switch( cmp ) // error
{
case std::strong_ordering::less : break; // error
case std::strong_ordering::greater : break; // error
case std::strong_ordering::equal : break; // error
}
Кстати, обратите внимание, какие замечательные короткие имена нам предлагают использовать для констант. На пол-экрана. А чо такова, мониторы-то теперь широкие?
Вылечить можно так. Хакаем заголовок <compare>.
class strong_ordering
{
__cmp_cat::type _M_value;
....
public:
....
constexpr operator int() const { return _M_value; }
....
// comparisons
friend constexpr bool
operator==(strong_ordering, strong_ordering) noexcept = default;
#if 0
friend constexpr bool
operator==(strong_ordering __v, __cmp_cat::__unspec) noexcept
{ return __v._M_value == 0; }
friend constexpr bool
operator< (strong_ordering __v, __cmp_cat::__unspec) noexcept
{ return __v._M_value < 0; }
friend constexpr bool
operator> (strong_ordering __v, __cmp_cat::__unspec) noexcept
{ return __v._M_value > 0; }
friend constexpr bool
operator<=(strong_ordering __v, __cmp_cat::__unspec) noexcept
{ return __v._M_value <= 0; }
friend constexpr bool
operator>=(strong_ordering __v, __cmp_cat::__unspec) noexcept
{ return __v._M_value >= 0; }
friend constexpr bool
operator< (__cmp_cat::__unspec, strong_ordering __v) noexcept
{ return 0 < __v._M_value; }
friend constexpr bool
operator> (__cmp_cat::__unspec, strong_ordering __v) noexcept
{ return 0 > __v._M_value; }
friend constexpr bool
operator<=(__cmp_cat::__unspec, strong_ordering __v) noexcept
{ return 0 <= __v._M_value; }
friend constexpr bool
operator>=(__cmp_cat::__unspec, strong_ordering __v) noexcept
{ return 0 >= __v._M_value; }
friend constexpr strong_ordering
operator<=>(strong_ordering __v, __cmp_cat::__unspec) noexcept
{ return __v; }
friend constexpr strong_ordering
operator<=>(__cmp_cat::__unspec, strong_ordering __v) noexcept
{ return strong_ordering(__cmp_cat::_Ord(-__v._M_value)); }
#endif
};
К себе добавляем что-нибудь по вкусу.
inline constexpr int CmpLess = std::strong_ordering::less ;
inline constexpr int CmpGreater = std::strong_ordering::greater ;
inline constexpr int CmpEqual = std::strong_ordering::equal ;
Теперь можно спокойно работать.
auto cmp = .... ; // вместо std::strong_ordering
if( cmp ) // ok
{
}
else
{
Printf(Con,"equal\n");
}
switch( cmp ) // ok
{
case CmpLess : break; // ok
case CmpGreater : break; // ok
case CmpEqual : break; // ok
}
Они сделали дерьмо опять
Комитет по стандартизации пора расстрелять. Такое ощущение, что эти дебилы никогда не писали софт сложнее hello world.
Кстати, обратите внимание, какие замечательные короткие имена нам предлагают использовать для констант. На пол-экрана. А чо такова, мониторы-то теперь широкие?
Вылечить можно так. Хакаем заголовок <compare>.
К себе добавляем что-нибудь по вкусу.
Теперь можно спокойно работать.
std::strong_ordering cmp = .... ;
if( cmp ) // error
{
}
else
{
Printf(Con,"equal\n");
}
switch( cmp ) // error
{
case std::strong_ordering::less : break; // error
case std::strong_ordering::greater : break; // error
case std::strong_ordering::equal : break; // error
}
Кстати, обратите внимание, какие замечательные короткие имена нам предлагают использовать для констант. На пол-экрана. А чо такова, мониторы-то теперь широкие?
Вылечить можно так. Хакаем заголовок <compare>.
много букв | |
| |
К себе добавляем что-нибудь по вкусу.
inline constexpr int CmpLess = std::strong_ordering::less ;
inline constexpr int CmpGreater = std::strong_ordering::greater ;
inline constexpr int CmpEqual = std::strong_ordering::equal ;
Теперь можно спокойно работать.
auto cmp = .... ; // вместо std::strong_ordering
if( cmp ) // ok
{
}
else
{
Printf(Con,"equal\n");
}
switch( cmp ) // ok
{
case CmpLess : break; // ok
case CmpGreater : break; // ok
case CmpEqual : break; // ok
}