blob: 7d8af475ba8862b0a3854b6adf3cda84a369dc66 [file] [log] [blame]
// { dg-do run }
// GROUPS passed destructors
#include <stdio.h>
int destruct = 0;
class bla {
public:
inline bla(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...
}