// { dg-do assemble } // { dg-options "-Wno-deprecated" } /* bug.cc */ /* simple program to demonstrate the bug with named return values in gcc */ /* (w) 4.9.97 by Kurt Garloff */ // 8/28/1998 - This dies in add_conversions from dfs_walk, null CLASSTYPE_METHOD_VEC // for the test record_type. This is marked as an expected failure for now, // until we actually fix it. #include template class test; template test operator + (const test& a, const test& b); // A simple numerical class template class test { T elem; public: test () { elem = 0; }; test (const T& a) { elem = a; }; test& operator += (const test& a) { elem += a.elem; return *this; }; friend test operator + <> (const test&, const test&); friend std::ostream& operator << (std::ostream& os, const test& a) { return os << a.elem; }; }; // named return value version template test operator + (const test& a, const test& b) return c(a);// { dg-error "" } named return value { c += b; } // { dg-error "" } c undeclared int main() { test x, y; x += 5; std::cout << x << std::endl; y = x + test(2); std::cout << y << std::endl; }