for compiler c++ clang

c++ - compiler - ¿Por qué clang++ destruye solo un objeto foo?



llvm 3.7 0 (1)

Tengo el siguiente código de ejemplo:

#include <iostream> using namespace std; struct foo { foo() { cout << "foo constructed./n"; } ~foo() { cout << "foo destroyed./n"; } }; struct bar { bar(foo t=foo{}) { } }; int main(int argc, char **argv) { bar X[2]{}; return 0; }

Cuando lo compilo con clang ++ -std = c ++ 11 test.cc, el programa produce el siguiente resultado:

foo constructed. foo constructed. foo destroyed.

pero esperaba un "foo destruido" adicional. entre los dos "foo construido". líneas. ¿Por qué solo se destruye un foo? Esto sucede con clang 3.5.1 y 3.6.0.


¡Gracias por todas las personas que lo probaron! Esto parece ser un error en el sonido metálico. Agradecería que alguien lo informe a llvm.org. Mis pocos informes de errores no fueron, digamos, realmente útiles, por lo que no estoy buscando repetir esa experiencia.