Com a nova sintaxe para listas de inicialização, é como se agora houvesse uma notação para o valor literal de praticamente qualquer estrutura de dados.
Observe meu teste de unidade construindo um "attribute template" PKCS #11 com std::vector direto na inicialização:
O segredo da notação está nessa pseudo-gramática:
type-name identifier { initializer-list };
que é análoga em significado a:
type-name identifier ( argument-list );
ou:
type-name identifier = type-name ( argument-list );
Observe meu teste de unidade construindo um "attribute template" PKCS #11 com std::vector direto na inicialização:
std::vector attributes
{
CK_ATTRIBUTE { CKA_CLASS, &object_class, sizeof(object_class) },
CK_ATTRIBUTE { CKA_TOKEN, &on_token, sizeof(on_token) },
CK_ATTRIBUTE { CKA_LABEL, &label, sizeof(label) },
CK_ATTRIBUTE { CKA_APPLICATION, &application, sizeof(application) },
CK_ATTRIBUTE { CKA_VALUE, &data, sizeof(data) }
};
{
CK_ATTRIBUTE { CKA_CLASS, &object_class, sizeof(object_class) },
CK_ATTRIBUTE { CKA_TOKEN, &on_token, sizeof(on_token) },
CK_ATTRIBUTE { CKA_LABEL, &label, sizeof(label) },
CK_ATTRIBUTE { CKA_APPLICATION, &application, sizeof(application) },
CK_ATTRIBUTE { CKA_VALUE, &data, sizeof(data) }
};
O segredo da notação está nessa pseudo-gramática:
type-name identifier { initializer-list };
que é análoga em significado a:
type-name identifier ( argument-list );
ou:
type-name identifier = type-name ( argument-list );
Comentários
Postar um comentário