Resultados da pesquisa a pedido "language-lawyer"

2 a resposta

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

3 a resposta

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

2 a resposta

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

3 a resposta

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

4 a resposta

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

2 a resposta

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; ...

1 a resposta

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

1 a resposta

É 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> ...

2 a resposta

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

2 a resposta

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