Size: a a a

2020 August 01

C

CodeDetector in supapro.cxx
Захар Виноградов
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <set>
using namespace std;
class TestC {
 private:
   int x;
   int y;
 public:
   TestC(){
     x=0;
     y=0;
   }
   TestC(int xx, int yy=1){
     x=xx;
     y=yy;
   }
};
int main(int argc, char** argv) {
 set<TestC> b;
 b.insert(3,3);
 return 0;
}
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
источник

Е

Егор in supapro.cxx
Захар Виноградов
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <set>
using namespace std;
class TestC {
 private:
   int x;
   int y;
 public:
   TestC(){
     x=0;
     y=0;
   }
   TestC(int xx, int yy=1){
     x=xx;
     y=yy;
   }
};
int main(int argc, char** argv) {
 set<TestC> b;
 b.insert(3,3);
 return 0;
}
1. Либо b.insert({3,3}) либо b.emplace(3,3)
2. Определи оператор<
источник

ЗВ

Захар Виноградов... in supapro.cxx
А как его определить? Или можно хотя бы его название сказать?
источник

Е

Егор in supapro.cxx
Захар Виноградов
А как его определить? Или можно хотя бы его название сказать?
set сортирует объекты которые ты ему даешь, тебе нужно задать критерий сортировки. Тебе точно std::set нужен? Или просто что-то чтоб элементы хранить?
источник

ЗВ

Захар Виноградов... in supapro.cxx
Можно и что-то другое, просто set удобен тем, что туда легко добавлять элементы, а затем их легко удалять.
источник

Е

Егор in supapro.cxx
Захар Виноградов
Можно и что-то другое, просто set удобен тем, что туда легко добавлять элементы, а затем их легко удалять.
Тогда вот  https://tproger.ru/translations/cpp-operator-overload-p2/
Листай до operator<
источник

D

Danya in supapro.cxx
источник

D

Danya in supapro.cxx
Захар Виноградов
А как его определить? Или можно хотя бы его название сказать?
Какой у тебя стандарт С++? Где ты программируешь?
источник

D

Danya in supapro.cxx
У меня вот такой вопрос появился
источник

D

Danya in supapro.cxx
Переслано от Danya
Почему при дефолтном операторе <=> компилятор может определить оператор==, а при user-defined — нет?
Понятно, что operator<=> является primary только для операторов меньше/больше, но при дефолтном он ещё почему-то и operator== определяет
источник

VS

Vlad Serebrennikov in supapro.cxx
Danya
Переслано от Danya
Почему при дефолтном операторе <=> компилятор может определить оператор==, а при user-defined — нет?
Понятно, что operator<=> является primary только для операторов меньше/больше, но при дефолтном он ещё почему-то и operator== определяет
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Danya
Переслано от Danya
Почему при дефолтном операторе <=> компилятор может определить оператор==, а при user-defined — нет?
Понятно, что operator<=> является primary только для операторов меньше/больше, но при дефолтном он ещё почему-то и operator== определяет
Потому что user-defined <=> может содержать любой код. Компилятор не может знать, какую его часть надо изменить, чтобы получить ==
источник

D

Danya in supapro.cxx
А где можно посмотреть открытые issue в стандарт?
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
На гитхабе можно
источник

D

Danya in supapro.cxx
Artöm Bakri Al-Sarmini
Потому что user-defined <=> может содержать любой код. Компилятор не может знать, какую его часть надо изменить, чтобы получить ==
(a <=> b) == 0?))
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Danya
(a <=> b) == 0?))
<=> != ==
источник

IM

Ian Mcewan in supapro.cxx
Добрый день. Кто-нибудь имел опыт разработки высоточного таймера под linux rt ? Ну или типа менеджера задач, чтобы по таймеру вызывать функции
источник

VS

Vlad Serebrennikov in supapro.cxx
Artöm Bakri Al-Sarmini
Потому что user-defined <=> может содержать любой код. Компилятор не может знать, какую его часть надо изменить, чтобы получить ==
как я понял из p1185, суть проблемы в том, что оператор <=> может быть неэффективен для сравнения на равенство, даже если хорошо его написать, и выявить это было проблематично
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Суть проблемы в том, что сравнение и проверка на равенство это 2 разные операции
источник

d

dekabr in supapro.cxx
есть функция 1 вида f(int a, float b, char c) {}
и есть функций 2 вида f(float b){}
как сконструировать функцию которая будет принимать аргументы как у 1 и форвардить соответствующие по типам аргументы во вторую ?
источник