Ho il codice seguente:inizializzazione std :: matrice aggregata richiede una quantità di confusione di graffe
enum class MessageDeliveryMethod
{
POST_MASTER,
BUBBLE,
NUM_ENUMERATORS
};
namespace
{
using MapType = std::array<
std::pair<char const*, MessageDeliveryMethod>,
static_cast<std::size_t>(MessageDeliveryMethod::NUM_ENUMERATORS)
>;
MapType g_mapping = {{
{"POST_MASTER", MessageDeliveryMethod::POST_MASTER},
{"BUBBLE", MessageDeliveryMethod::BUBBLE},
}};
}
Questa compila ma non so perché. La variabile g_mapping
richiede un livello aggiuntivo di parentesi graffe apparentemente ridondanti. In altre parole, mi aspetto che l'inizializzazione sia simile a:
MapType g_mapping = {
{"POST_MASTER", MessageDeliveryMethod::POST_MASTER},
{"BUBBLE", MessageDeliveryMethod::BUBBLE},
};
(Un livello di parentesi graffe rimosso).
La mia comprensione è che prima di C++ 14, quando si esegue l'inizializzazione diretta è richiesto il livello aggiuntivo di parentesi. Tuttavia, l'inizializzazione della copia non avrebbe dovuto richiedere questo basato su this page (guarda l'esempio lì).
Qualcuno può spiegarlo?
UPDATE:
This SO question che si presume essere duplicato dalla mia domanda in effetti rispondere ad alcune domande specifiche e utili (in relazione alla mia) ma fuori contesto il mio era confusa a causa dell'utilizzo di pair
(che ho il pensiero stava causando inizialmente il problema). Non avrei mai trovato quella domanda SO in primo luogo, quindi se mai penso che il modo in cui ho formulato la mia domanda possa aiutare le persone ad arrivare alla soluzione da diverse angolazioni.
Plusone per il titolo. La coppia elision è davvero una ... disabbia? –
Ho modificato il mio post per chiarire perché non ritengo che sia un duplicato. I moderatori/comunità SO sono diventati pessimi ultimamente riguardo alla chiusura prematura delle domande come duplicati invece di considerare le prospettive di tutti gli altri. –
Arrivando da diverse angolazioni è lo scopo di mantenere le domande duplicate sul sito. Non è un problema che questo porti a risposte esistenti. –