blob: 16262842fe87ab89f1feac09b92d14d8931b2b36 [file] [log] [blame]
// { dg-do run }
// GROUPS passed destructors
#include <stdio.h>
int destruct = 0;
class bla {
public:
inline bla(const char * jim) { ; }
inline ~bla() { destruct++; if (destruct == 2) printf ("PASS\n");}
};
class ulk {
public:
inline ulk() {}
inline ~ulk() {}
void funk(const bla & bob) { ;}
// ^ interestingly, the code compiles right if
// this & is deleted (and therefore the parameter
// passed as value)
};
int main() {
ulk dumm;
dumm.funk(bla("laberababa")); // this compiles correctly
dumm.funk((bla)"laberababa"); // this produces incorrect code -
// the temporary instance of
// the class "bla" is constructed
// but never destructed...
}