Resultados da pesquisa a pedido "most-vexing-parse"

2 a resposta

Diferença entre a análise de void () e int ()

Depois de ler sobre a análise mais irritante, experimentei um pouco e encontrei este programa. Existem duas linhas muito semelhantes. Um deles gera avisos em g ++ 7 e clang ++ - 3.9, outro não. int main() { void(); // no warning int(); // ...

2 a resposta

C ++ A maioria dos vexames analisa quando um literal numérico é o argumento? [duplicado

Esta pergunta já tem uma resposta aqui: Por que os inicializadores de classe podem usar apenas = ou {}? [/questions/16329962/why-can-in-class-initializers-only-use-or] 1 respostaEu estava fazendo uma aula assim: struct InputHandler { ...

1 a resposta

Definição de função C ++ e incompatibilidade de declaração variável?

Considere este código muito simples: #include <memory> class Foo { public: Foo() {}; }; class Bar { public: Bar( const std::shared_ptr<Foo>& foo ) {} }; int main() { Foo* foo = new Foo; Bar bar( std::shared_ptr<Foo>( foo ) ); return 0; }Por que ...

3 a resposta

Erro de compilação do C ++ na construção de objeto com rvalue std :: string

Estou diante de um erro de compilação que nem sei descrever! Isso me deixa completamente perplexo. A situação: O código tenta criar um objeto na pilha com um rvalue std :: string que é inicializado com um caractere *. O código: #include ...

1 a resposta

Como isso é uma análise mais irritante?

Eu estava passando por issoartigo [http://herbsutter.com/2013/05/09/gotw-1-solution/] e há uma declaração no item 3 dizendo // C++98 rectangle w( origin(), extents() ); // oops, vexing parsecomo é a análise mais irritante acima? Se eu fiz algo ...

2 a resposta

Por que o C ++ nos permite colocar o nome da variável entre parênteses ao declarar uma variável?

Por exemplo, uma declaração como essa: int (x) = 0;Ou até isso: int (((x))) = 0;Eu me deparei com isso porque, no meu código, tinha um fragmento semelhante ao seguinte: struct B { }; struct C { C (B *) {} void f () {}; }; int main() { B *y; C ...

2 a resposta

g ++ rejeita, clang ++ aceita: foo (x) ("bar") ("baz");

Alguém tevePerguntou [https://stackoverflow.com/questions/28254915/code-compiles-with-clang-but-not-with-gcc/28255085] no outro dia, por que algo compila com clang, mas não com gcc. Eu entendi intuitivamente o que estava acontecendo e fui capaz ...

2 a resposta

A construção da chamada de função temporária é interpretada como declaração

Ultimamente, encontrei um problema que de alguma forma (mas apenas de alguma forma) faz sentido para mim. Ele é baseado na interpretação da construção de um temporário como declaração do argumento do construtor único (!). Por favor, dê uma olhada ...

3 a resposta

Por que objetos anônimos às vezes exigem um construtor padrão?

Se eu escrever o seguinte programa, ele funcionará conforme o esperado: struct Foo { Foo (std::string x) { std::cout << x << std::endl; } }; int main () { Foo("hello, world"); }No entanto, se eu escrever um programa um pouco diferente, recebo um ...

2 a resposta

Diferença C ++ 11 em construtores (chaves)

Eu sou bastante novo em C ++ e observei que as seguintes linhas de código agem de maneira diferente MyClass c1; c1.do_work() //works MyClass c2(); c2.do_work() //compiler error c2228: left side is not a class, structure, or union. MyClass c3{}; ...