PR c++/86728 - C variadic generic lambda.
[official-gcc.git] / gcc / testsuite / g++.dg / ubsan / pr68259.C
blob5137edd1f8bd705c7598d326694d846d92e3eb64
1 // PR middle-end/68259\r
2 \r
3 // { dg-do compile }\r
4 // { dg-options "-fsanitize=undefined -w" }\r
5 \r
6 namespace std {\r
7   template < typename _Tp > class allocator { };\r
8     template < typename _Tp, typename _Alloc\r
9 = std::allocator < _Tp >\r
10 >class vector {\r
11   public:\r
12 typedef _Tp value_type;\r
13     void push_back (const value_type & __x) { }\r
14   };\r
15 }\r
16 class Foo;\r
17 class FooBar {\r
18 public:\r
19 Foo * primitive_context;\r
20   FooBar () { }\r
21   FooBar (const FooBar & pnhp);\r
22 };\r
23 template < class KEY, class CONTENT > class AVLTreeNode { };\r
24 template < class KEY, class CONTENT > class FooTree final\r
25 {\r
26   FooBar insertPrimitive ();\r
27 public:\r
28 AVLTreeNode < KEY, CONTENT > *seek_no_lock (const KEY & key) { }\r
29   void primitive_patterns ( std::vector < FooBar > &patterns);\r
30 };\r
31 template < class KEY, class CONTENT > void FooTree < KEY,\r
32   CONTENT >::primitive_patterns ( std::vector <FooBar > &patterns)\r
33 {\r
34     patterns.push_back (insertPrimitive());\r
35 }\r
36 template < class KEY, class CONTENT >\r
37 FooBar FooTree < KEY, CONTENT >::insertPrimitive ()\r
38 {\r
39   FooBar place;\r
40   seek_no_lock (place.primitive_context);\r
41   return place;\r
42 }\r
43 class ManuverResults { };\r
44 class opc_info_t\r
45 {\r
46 public:\r
47 FooTree < Foo *, ManuverResults > *primitivecache;\r
48 };\r
49 static void\r
50 do_optical_prox_corr_tsafe (opc_info_t * opc_info)\r
51 {\r
52   std::vector < FooBar > patterns;\r
53   opc_info->primitivecache->primitive_patterns (patterns);\r
54 }\r