Resultados da pesquisa a pedido "language-lawyer"

4 a resposta

Declarações / definições como declarações em C e C ++

Fiquei confuso quando isso não seria compilado em C: int main() { for (int i = 0; i < 4; ++i) int a = 5; // A dependent statement may not be declaration return 0; }Estou acostumado a C ++, onde isso irá compilar. Fiquei pasmo por um tempo até me ...

3 a resposta

membro de dados estáticos constexpr sem inicializador

#include <complex> struct S { static std::complex<double> constexpr c; };O gcc gera um erro porque está faltando um inicializador. Clang e MSVC não geram um erro. Tanto quanto sei, um membro de dados estáticos constexpr deve ter ...

4 a resposta

Acesso ao membro protegido por meio de ponteiro de membro: é um hack?

Todos conhecemos membros especificadosprotected de uma classe base só pode ser acessada a partir de uma instância própria da classe derivada. Este é um recurso do Standard, e isso foi discutido no Stack Overflow várias vezes: Não é possível ...

2 a resposta

Tipo incompleto não é permitido em uma classe, mas é permitido em um modelo de classe

O código a seguir é inválido: struct foo { struct bar; bar x; // error: field x has incomplete type struct bar{ int value{42}; }; }; int main() { return foo{}.x.value; }Isso é bem claro, poisfoo::bar é considerado incompleto no ponto em ...

4 a resposta

O `sizeof` * realmente * é avaliado como um` std :: size_t`? Pode?

Tome a seguinte passagem padrão: [C++11: 5.3.3/6]: O resultado desizeof esizeof... é uma constante do tipostd::size_t. [ Nota: std::size_t é definido no cabeçalho padrão<cstddef> (18,2)- end note] Agora: [C++11: 18.2/6]: O tiposize_t é um tipo ...

1 a resposta

O que acontece quando uma exceção é lançada ao computar um constexpr?

Ao calcular expressões constantes para inicializar umconstexpr é possível lançar exceções. Por exemplo, aqui está um exemplo em que o cálculo de uma expressão constante é protegido contra o estouro: #include <iostream> #include <stdexcept> ...

1 a resposta

É possível passar um inicializador entre chaves como um parâmetro de macro?

Eu tenho uma função que eu chamo assim: literal<long[2]>({1, 2});Quero escrever uma macro que se expanda para esta declaração, por exemplo: MYMACRO(long[2], {1, 2})Infelizmente, o pré-processador não está ciente da correspondência entre chaves ...

2 a resposta

Aliasing estrito do C ++ quando não estiver usando o ponteiro retornado pelo posicionamento new

Isso pode causar um comportamento indefinido? uint8_t storage[4]; // We assume storage is properly aligned here. int32_t* intPtr = new((void*)storage) int32_t(4); // I know this is ok: int32_t value1 = *intPtr; *intPtr = 5; // But can one of the ...

5 a resposta

Quais são as assinaturas válidas para a função main () de C?

Quais são realmente as assinaturas válidas para a função principal em C? Eu sei: int main(int argc, char *argv[])Existem outros válidos?

12 a resposta

Observable behavior and undefined behavior — What happens if I don't call a destructor?

Nota: Eu já vi perguntas semelhantes, mas nenhuma das respostas é precisa o suficiente, então eu mesmo estou fazendo isso. Esta é uma pergunta muito "exigente" do advogado da linguagem; Estou procurando uma resposta autorizada.O padrão C ++ ...