Resultados da pesquisa a pedido "language-lawyer"
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 ...
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 ...
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 ...
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 ...
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 ...
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> ...
É 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 ...
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 ...
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?
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 ++ ...