2012-12-04 2 views
7

Mentre studio diverse sezioni nello standard C++ (Where do I find the current C or C++ standard documents?), vorrei fare riferimento ai "Termini e definizioni", §1.3.Come interpretare "termini e definizioni" nel documento standard C++?

Tuttavia, i termini e le definizioni sono forniti in una forma che non riesco a comprendere o interpretare adeguatamente, e non vi è alcuna spiegazione fornita nel testo su come interpretarli.

consideri il primo termine che viene definita nella sezione "Termini e definizioni" dello standard:

1.3.1 [defns.argument]

argomento

argomento corrente

parametro attuale

< funzione di chiamata di espressione > espressione nella elenco separato da virgole delimitata dalle parentesi

  1. Che cosa significa [defns.argument] fare riferimento a?
  2. Qual è il significato e lo scopo delle linee actual argument e actual parameter?
  3. <function call expression> si riferisce a un diverso "termine o definizione"? Se è così, non è definito nella sezione "Termini e definizioni" - perché no? In caso contrario, a cosa si riferisce? (NOTA: non sto chiedendo cosa significhi "espressione di chiamata di funzione", perché già so, invece, sto chiedendo come leggere e interpretare la sezione "Termini e definizioni" dello standard C++ usando questo semplice esempio.)
+0

Non sono sicuro del resto, ma '[defns.argument]' è un nome "alias" per la sezione. Ogni sezione ha uno. Penso che l'idea sia semplicemente di avere un nome più significativo di un numero di sezione. – Ari

risposta

5
  1. Che cosa significa [defns.argument] fare riferimento a?

    [defns.argument] è il tag della sezione; è destinato ad essere utilizzato per scopi editoriali in quanto è invariante in sezione rinumerazione (ad es. in risposta a inserimento, rimozione o riordino di sezioni). Può anche essere usato riferendosi allo standard, ma i numeri di sezione (relativi a una versione pubblicata dello standard) sono più concisi.

  2. Qual è il significato e lo scopo delle righe argomento effettivo e parametro effettivo?

    "attuale argomento" e "attuale parametro" sono alias per il termine "argomento". Vedrete sotto 1.3.14 [defns.parametro] che "argomento formale" e "parametro formale" sono alias per il termine "parametro".

    I termini "argomento corrente" e "parametro effettivo" vengono visualizzati solo in [defns.argument]; "argomento formale" è descritto come un alias in 8.3.5p11, e "parametro formale" è usato in circa 13 luoghi, una piccola frazione del numero di luoghi in cui viene utilizzato "parametro".

  3. Vuol < funzione di chiamata di espressione > si riferiscono a un "termine o definizione" diverso?

    Il termine parentesi angolare è il contesto in cui si applica questa definizione. Ad esempio, "argomento" ha un significato diverso nel contesto di una "espressione di chiamata di funzione " nel contesto di una "macro simile a una funzione".

+0

Un cavillo: '[defns.argument]' non è un nome di sezione. È un tag. Le definizioni, secondo le regole ISO per la stesura, sono un po 'funky, ma a parte questo, ogni sezione ha un nome. Come dici tu, il tag non cambia, anche se la sezione si sposta o viene rinominata. –

3

Che cosa significa [defns.argument] fare riferimento a?

Questo è un modo alternativo di fare riferimento alla sezione (1.3.1). Dovrebbe rimanere lo stesso nelle versioni future dello standard (a meno che non venga rimosso), mentre la numerazione potrebbe cambiare.

Qual è il significato e lo scopo di "argomento effettivo" e "parametro effettivo"?

Sono altri termini che potresti vedere, che significano la stessa cosa. Credo che le vecchie versioni delle specifiche. usato "argomento formale" e "argomento reale" in cui le specifiche moderne. usa "parametro" e "argomento".

<function call expression> si riferisce a un diverso "termine o definizione"?

Questo è il contesto in cui "argomento" ha questo significato - le sezioni seguenti danno significati diversi in altri contesti. Le espressioni di chiamata di funzione sono definite in 5.2.2; all'interno di tale espressione, "argomento" significa "espressione nella lista separata da virgole delimitata dalle parentesi".

+0

Grazie per il riferimento a dove 'function call expression' è definita. Questa risposta si qualifica anche come la risposta selezionata a questa domanda. –