Perguntas com a marcação «c++»

13
Possível bug do compilador no MSVC

O código a seguir é compilado com gcc e clang (e muitos outros compiladores C ++ 11) #include <stdint.h> typedef int datatype; template <typename T> struct to_datatype {}; template <> struct to_datatype<int16_t> { static constexpr datatype value = 1; }; template...

13
Como uma const expr pode ser avaliada tão rapidamente

Eu tenho experimentado expressões const que são avaliadas em tempo de compilação. Mas eu brinquei com um exemplo que parece incrivelmente rápido quando executado em tempo de compilação. #include<iostream> constexpr long int fib(int n) { return (n <= 1)? n : fib(n-1) + fib(n-2); }...

13
Inicialização da lista de cópias? Por que isso compila?

Estou usando a Comunidade do Microsoft Visual Studio 2019, V16.5.2. Quero testar a inicialização da lista Por favor, veja o seguinte programa de teste: #include <string> void foo(std::string str) {} int main() { foo( {"str1", "str2"} ); return 0; } Isso compila sem erro e aviso. Por...

13
Como a implementação do c ++ nullptr funciona?

Estou curioso para saber como nullptrfunciona. Os padrões N4659 e N4849 dizem: tem que ter tipo std::nullptr_t; você não pode pegar o endereço dele; pode ser convertido diretamente em um ponteiro e ponteiro em membro; sizeof(std::nullptr_t) == sizeof(void*); sua conversão para boolé false; seu...

12
Inicialização do vetor de atômica

Considerar: void foo() { std::vector<std::atomic<int>> foo(10); ... } O conteúdo de foo agora é válido? Ou preciso fazer um loop explicito e inicializá-los? Eu verifiquei Godbolt e parece bom, no entanto, o padrão parece estar muito confuso neste ponto. O construtor std :: vector...

12
Soma estável eficiente de números ordenados

Eu tenho uma lista bastante longa de números positivos de ponto flutuante ( std::vector<float>, tamanho ~ 1000). Os números são classificados em ordem decrescente. Se eu somar eles seguindo a ordem: for (auto v : vec) { sum += v; } Acho que posso ter algum problema de estabilidade numérica,...