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

C ++ 20 é o destino da versão do C ++ após o C ++ 17. Essa tag deve ser usada (junto com a tag C ++) para perguntas sobre os recursos do C ++ na trilha do C ++ 20.


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


4
Quebrar a mudança no C ++ 20 ou a regressão no clang-trunk / gcc-trunk ao sobrecarregar a comparação de igualdade com o valor de retorno não-booleano?
O código a seguir é compilado com clang-trunk no modo c ++ 17, mas é interrompido no modo c ++ 2a (próximo c ++ 20): // Meta struct describing the result of a comparison struct Meta {}; struct Foo { Meta operator==(const Foo&) {return Meta{};} Meta operator!=(const Foo&) {return Meta{};} …

1
O span pode ser constexpr?
Todos os construtores de std :: span são declarados constexpr, no entanto, não consigo fazer com que nenhum deles funcione em um contexto constexpr. Descomentar qualquer um dos constexpr abaixo resultará em um erro de compilação. #include <array> #include <span> int main() { constexpr int carray[3] = { 0, 1, …
11 c++  constexpr  c++20 

1
Por que std :: span não possui operadores de comparação?
Não foi std::spanconcebido como uma referência leve para sub-regiões de std::vector/ std::array/ array simples e similares? Ele também não deve conter operadores de comparação em sua API, para ser consistente com eles? Qual foi o raciocínio por trás da exclusão? Nota: por operadores de comparação, quero dizer quer o conjunto …
10 c++  std  c++20  std-span 


1
Seremos capazes de construir contêineres com visualizações em C ++ 20?
As faixas estão chegando ao C ++ com a versão padrão do C ++ 20. Minha pergunta: Seremos capazes de construir contêineres de biblioteca padrão (existentes) com qualquer intervalo? E mais importante, com vistas de alcance? Por exemplo, isso será: #include <vector> #include <iostream> #include <ranges> int main() { auto …
10 c++  c++20  range-v3 

1
São necessárias expressões permitidas para "capturar" variáveis ​​do escopo anexo?
No exemplo a seguir, os argumentos da função são usados ​​para testar com uma expressão requer se uma expressão que os utiliza está bem formada. A expressão requer não requer argumentos; ele usa diretamente as variáveis ​​no escopo da função: #include <cstddef> #include <vector> template<typename T> void Resize(T &v, std::size_t …


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.