arduino / arduino/ArduinoCore-API

String relational operators are members.

Aperta
#86 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
C++
Stelle
306
Fork
150
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Member relational operators are no good because they cause the lhs and rhs to be treated differently. This causes problems such as making == appear non-commutative. Such as:

```c++
void setup() {
String("hi") == "world";
"world" == String("hi");
}
```

```
sketch_jan19a:3: error: no match for 'operator==' (operand types are 'const char [6]' and 'String')
"world" == String("hi");
^
exit status 1
```

It would be less user-surprising to bring these operators out of the class.

I propose defining them at namespace scope as symmetric pairs of operators, between a String on one side, and everything String accepts as an implicit conversion on the other side, per:
http://en.cppreference.com/w/cpp/string/basic_string/operator_cmp

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Usa le due espressioni C++ nell’issue come prima riproduzione, quindi individua le dichiarazioni degli operatori relazionali di String in ArduinoCore-API. Confronta entrambi gli ordini degli operandi e verifica il comportamento esistente di String; il lavoro è completo quando i confronti equivalenti possono essere compilati e si comportano simmetricamente, con una copertura per il caso segnalato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
cpp
Ambito
api, embedded-iot
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.