diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.law/cvt2.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.law/cvt2.C | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C new file mode 100644 index 00000000000..3a5a1b94303 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C @@ -0,0 +1,42 @@ +// GROUPS passed conversions +#include <stdio.h> +#include <stdlib.h> +#include <iostream.h> +#include <fstream.h> + +extern "C" { +int strncmp (const char *, const char *, size_t); +} + +class cvec { +public: + ~cvec(){ delete s; } + cvec(const char*x) { s = new char[strlen(x)+1]; strcpy(s, x); } + cvec(const cvec& c) { s = new char[strlen(c.s)+1]; strcpy(s, c.s); } + operator const char*() { return s; } +private: + char *s; +}; + +cvec +B(const char* a) +{ + return a; +} + +void +A(const char* s) +{ + // s still ok here + ifstream inf(s); + if (strncmp ("aaa", s, 3)) + printf ("FAIL\n"); + else + printf ("PASS\n"); +} + +main() +{ + A(B("aaa")); +} + |