Ceci est notre liste à faire. À terme, les entrées deviendront des règles ou des parties de règles. Sinon, nous déciderons qu’aucun changement n’est nécessaire et supprimerons l’entrée.
std, et d’autres espaces de noms « fondamentaux » (ex. experimental))std::literals::*_literals) ?void* devrait bien sentir la chaleur de la gloire sur ses orteils. C’est l’un de mes privilégiés depuis plusieurs années. :)const partout où c’est possible : fonctions membres, variables et (félicitations) itérateurs constauto(size) vs. {initializers} vs. {Extent{size}}std::function) vs. CRTP / statique ? OUI. Peut‑être même vs. dispatch par tagstd::bind, Stephen T. Lavavej le critique tellement que je commence à me demander s’il disparaîtra réellement à l’avenir. Les lambdas devraient‑elles être recommandées à la place ?p = (s1 + s2).c_str();Invalidation de pointeurs/itérateurs menant à des pointeurs pendants : void bad() { int* p = new int[700]; int* q = &p[7]; delete p;
vector<int> v(700);
int* q2 = &v[7];
v.resize(900);
// ... utilisez q et q2 ... }
Évitez les variables membres statiques (conditions de course, quasi-variables globales)
lock_guard, unique_lock, shared_lock), ne jamais appeler mutex.lock et mutex.unlock directement (RAII)std::terminate dans le destructeur s’il n’est pas joint ou détaché … y a‑t‑il une bonne raison de détacher les threads ?) ?? Une librairie de support pourrait offrir un wrapper RAII pour std::thread ?std::lock (ou un autre algorithme d’évitement de deadlock ?)condition_variable, protégez toujours la condition par un mutex (la variable booléenne atomique dont la valeur est définie hors mutex est incorrecte !), et utilisez le même mutex pour la variable de condition elle‑mêmeatomic_compare_exchange_strong avec std::atomic<user-defined-struct> (les différences de remplissage comptent, alors que compare_exchange_weak dans une boucle converge vers un remplissage stable)shared_future individuels ne sont pas thread‑safe : deux threads ne peuvent pas attendre sur le même objet shared_future (ils peuvent attendre sur des copies d’un shared_future qui référencent le même état partagé)shared_ptr individuels ne sont pas thread‑safe : différents threads peuvent appeler des fonctions membres non const sur des shared_ptr différents qui se réfèrent au même objet partagé, mais un thread ne peut pas appeler une fonction membre non const d’un objet shared_ptr pendant qu’un autre thread accède au même objet shared_ptr (si vous en avez besoin, envisagez atomic_shared_ptr)