Resultados da pesquisa a pedido "most-vexing-parse"
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(); // ...
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 { ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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{}; ...