Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[hardware.interference] Bad examples of using alignas

Aperta
#9,007 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
45/100
Tipo di issue
Documentazione
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
cpp
Ambito
documentation

Direzione di ricerca

Inizia con i due esempi di interferenza hardware citati nell'issue e rivedi la formulazione circostante della bozza dello standard relativa a alignas e ai requisiti di allineamento. Determina se gli esempi richiedono la gestione di allineamenti validi e se alignas(sizeof(together)) è giustificato. Il lavoro è completato quando gli esempi e la loro spiegazione non implicano più assunzioni di allineamento non supportate e la motivazione del secondo esempio è chiara.

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

Descrizione

lwg

Example 1 is the following:

struct keep_apart {
  alignas(hardware_destructive_interference_size) atomic<int> cat;
  alignas(hardware_destructive_interference_size) atomic<int> dog;
};

There is nothing specifying that these must be valid alignments, or that they must even be nonnegative integer powers of two. Would it make sense to use something like bit_ceil here, plus a check to handle the case where that result is not representable? That would fix the latter issue, not sure if it is possible to check if something is a valid alignment.

Example 2 is the following:

struct together {
  atomic<int> dog;
  int puppy;
};
struct kennel {
  // Other data members...
  alignas(sizeof(together)) together pack;
  // Other data members...
};
static_assert(sizeof(together) <= hardware_constructive_interference_size);

Why is alignas(sizeof(together)) being done? The two issues mentioned above are also present here.

Lingua principale
TeX
Stelle
221
Fork
813
Merge medio
17h 45m
PR unite (30g)
34

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di cplusplus/draft

Tutte le issue di cplusplus/draft

Issue simili

Altre issue su Documentation

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.