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

C ++ é uma linguagem de programação de uso geral. Foi originalmente projetado como uma extensão para C e tem uma sintaxe semelhante, mas agora é uma linguagem completamente diferente. Use esta tag para perguntas sobre o código (a ser) compilado com um compilador C ++. Use uma tag específica da versão para perguntas relacionadas a uma revisão padrão específica [C ++ 11], [C ++ 14], [C ++ 17] ou [C ++ 20] etc.


1
Por que as mesmas variáveis ​​locais externas nomeadas em blocos diferentes obtêm vínculos diferentes entre compiladores em c ++?
Enquanto eu estava apenas verificando quais vínculos são concedidos a variáveis ​​locais externas, descobri que algum comportamento diferente entre compiladores por exemplo, se eu testei abaixo do código, como você vê nos comentários, a variável vars tem diferentes vínculos // foo.cpp int var = 10; // external linkage // main.cpp …
12 c++  g++  clang++  extern  linkage 

1
O `equal_comparable_with` precisa exigir o` common_reference`?
O conceitoequality_­comparable_with<T, U> se destina a declarar que os objetos do tipo Te Upode ser comparado iguais uns aos outros, e se eles são, então este tem o significado esperado. Isso é bom. No entanto, esse conceito também requer common_reference_t<T&, U&>a existência. O principal ímpeto common_referencee sua funcionalidade correspondente parecem …



1
Definição fora da classe C ++ 20 em uma classe de modelo
Até o padrão C ++ 20 do C ++, quando queríamos definir um operador fora da classe que usa alguns membros privados de uma classe de modelo, usaríamos uma construção semelhante a esta: template <typename T> class Foo; template <typename T> constexpr bool operator==(T lhs, const Foo<T>& rhs); template <typename …
12 c++  templates  c++20 

1
O lambda sem captura é garantido como vazio pelo padrão?
Estou procurando uma maneira de identificar lambdas vazias (sem captura) de outras lambdas em uma função de modelo. Atualmente, estou usando C ++ 17, mas estou curioso para respostas C ++ 20 também. Meu código fica assim: template<typename T> auto func(T lambda) { // The aguments of the lambdas are …
12 c++  lambda  c++17  c++20 



2
Por que uma variável enum é um rvalue aqui?
Exemplo: typedef enum Color { RED, GREEN, BLUE } Color; void func(unsigned int& num) { num++; } int main() { Color clr = RED; func(clr); return 0; } Eu recebo o seguinte erro ao compilar isso: <source>: In function 'int main()': <source>:16:9: error: cannot bind non-const lvalue reference of type …

1
Alias ​​público para o tipo não público
Gostaria de saber se é válido C ++: class Test { struct PrivateInner { PrivateInner(std::string const &str) { std::cout << str << "\n"; } }; public: using PublicInner = PrivateInner; }; //Test::PrivateInner priv("Hello world"); // Ok, private so we can't use that Test::PublicInner publ("Hello World"); // ?, by using public …


2
Passando um conceito para uma função
Como os conceitos são definidos como predicados em tempo de compilação, também é possível realmente reutilizá-los para algoritmos em tempo de compilação? Por exemplo, seria possível verificar se todos os tipos em uma tupla estão em conformidade com um conceito? Até onde eu vi, não é possível passar um conceito …

5
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, …

2
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 diz que insere instâncias inseridas por …
12 c++  vector  atomic 

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.