Resultados da pesquisa a pedido "language-lawyer"
Modelo de alias correspondente como argumento do modelo
Considere ocódigo a seguir [https://wandbox.org/permlink/XjObkCwtvrkB3Y7R]: #include <type_traits> template<template<class...> class T, class... U> struct is_specialization_of : std::false_type{}; template<template<class...> class T, class... U> ...
Avaliando strlen no momento da compilação?
Se meu código tiver esseconstexpr corda constexpr char my_str[] = "hello";o tipo demy_str contém informações sobre seu tamanho, ou seja,sizeof(my_str) é uma constante 6 e pode ser usado em qualquer lugar em que é necessária uma ...
Padrão C ++: as variáveis constexpr com escopo no espaço para nome têm ligação interna?
Imagine que temos um cabeçalhofoo.h contendo o seguinte: #ifndef FOO_H_ #define FOO_H_ namespace foo { constexpr std::string_view kSomeString = "blah"; } #endif // FOO_H_Éfoo::kSomeString garantido que tenha ligação interna em qualquer unidade ...
O padrão `std :: array <T, 0>` é construtível por padrão, onde `T` não é construtível por padrão?
Considere o código abaixo: #include <array> struct T { T() = delete; }; int main() { std::array<T, 0> a; a.size(); }Por padrão, inicializamos uma matriz de tamanho 0. Como não há elementos, nenhum construtor deT deve ser chamado. Contudo,Clang ...
A referência nula é possível?
Este pedaço de código é válido (e comportamento definido)? int &nullReference = *(int*)0;O g ++ e o clang ++ o compilam sem nenhum aviso, mesmo ao usar-Wall, -Wextra, -std=c++98, -pedantic, -Weffc++... É claro que a referência não é realmente ...
Aliasing struct e array da maneira conforme
Nos velhos tempos do pré-ISO C, o código a seguir não surpreenderia ninguém: struct Point { double x; double y; double z; }; double dist(struct Point *p1, struct Point *p2) { double d2 = 0; double *coord1 = &p1.x; double *coord2 = &p2.x; int i; ...
Posso usar o resultado de um operador de conversão C ++ 17 lambda constexpr captureless como argumento de tipo de modelo de ponteiro de função?
Ao responderComo escrevo uma expressão lambda que se parece com um método? [https://stackoverflow.com/questions/47604606/how-do-i-write-a-lambda-expression-that-looks-like-a-method] , Tentei transformar um lambda sem captura em um ponteiro de ...
É legal verificar se o endereço de um subobjeto está dentro dos limites de um objeto que contém
2 perguntas: O código a seguir está bem formado com comportamento definido? Existe alguma implementação possível de c ++ na qual ela possa afirmar? Código (c ++ 11 e superior): #include <cassert> #include <utility> #include <ciso646> ...
Existe uma diferença (semântica) entre o valor de retorno do posicionamento novo e o valor convertido de seu operando?
Existe uma diferença (semântica) entre o valor de retorno do posicionamento novo e o valor convertido de seu operando? struct Foo { ... }; char buffer[...]; Foo *a = new(buffer) Foo; Foo *b = reinterpret_cast<Foo *>(buffer);Faza eb diferem de ...
mudança std :: make_shared () no C ++ 17
Nocppref [http://en.cppreference.com/w/cpp/memory/shared_ptr/make_shared], o seguinte é válido até C ++ 17: código comof(std::shared_ptr<int>(new int(42)), g()) pode causar vazamento de memória seg é chamado depoisnew int(42) e lança uma ...