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.

3
Conceitos do C ++ 20: Qual especialização de modelo é escolhida quando o argumento do modelo se qualifica para vários conceitos?
Dado: #include <concepts> #include <iostream> template<class T> struct wrapper; template<std::signed_integral T> struct wrapper<T> { wrapper() = default; void print() { std::cout << "signed_integral" << std::endl; } }; template<std::integral T> struct wrapper<T> { wrapper() = default; void print() { std::cout << "integral" << std::endl; } }; int main() { wrapper<int> w; …





2
Por que o conceito same_as verifica a igualdade de tipos duas vezes?
Observando a possível implementação do conceito same_as em https://en.cppreference.com/w/cpp/concepts/same_as, notei que algo estranho está acontecendo. namespace detail { template< class T, class U > concept SameHelper = std::is_same_v<T, U>; } template< class T, class U > concept same_as = detail::SameHelper<T, U> && detail::SameHelper<U, T>; A primeira pergunta é por que …
19 c++  c++20  concept 

4
Enumeração contínua C ++ 11
Existe uma maneira de verificar no C ++ 11 se uma enumeração é contínua ? É totalmente válido fornecer valores de enumeração que não são. Existe talvez um recurso como um traço de tipo em C ++ 14, C ++ 17 ou C ++ 20 para verificar se o enum …
17 c++  c++11  c++14  c++17  c++20 






2
O armazenamento std :: chrono :: years é realmente pelo menos 17 bits?
Da cppreference std::chrono::years (since C++20) duration</*signed integer type of at least 17 bits*/, std::ratio<31556952>> Usando libc++, parece que o armazenamento de sublinhado de std::chrono::yearsé shortque é assinado 16 bits . std::chrono::years( 30797 ) // yields 32767/01/01 std::chrono::years( 30797 ) + 365d // yields -32768/01/01 apparently UB Existe um erro de …
14 c++  chrono  c++20  libc++ 

1
if constexpr - por que a declaração descartada é totalmente verificada?
Eu estava brincando com c ++ 20 consteval no GCC 10 e escrevi este código #include <optional> #include <tuple> #include <iostream> template <std::size_t N, typename Predicate, typename Tuple> consteval std::optional<std::size_t> find_if_impl(Predicate&& pred, Tuple&& t) noexcept { constexpr std::size_t I = std::tuple_size_v<std::decay_t<decltype(t)>> - N; if constexpr (N == 0u) { return …

3
std :: bit_cast com std :: array
Em sua recente palestra “Type punping in C ++ moderno”, Timur Doumler disse que std::bit_castnão pode ser usado para converter um bit floatem um, unsigned char[4]porque matrizes no estilo C não podem ser retornadas de uma função. Devemos usar std::memcpyou aguardar até C ++ 23 (ou mais recente) quando algo …

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.