File tree 2 files changed +19
-0
lines changed
2 files changed +19
-0
lines changed Original file line number Diff line number Diff line change 41
41
#![ feature( never_type) ]
42
42
#![ feature( unwrap_infallible) ]
43
43
#![ feature( leading_trailing_ones) ]
44
+ #![ feature( const_forget) ]
44
45
45
46
extern crate test;
46
47
Original file line number Diff line number Diff line change @@ -129,3 +129,21 @@ fn test_discriminant_send_sync() {
129
129
is_send_sync :: < Discriminant < Regular > > ( ) ;
130
130
is_send_sync :: < Discriminant < NotSendSync > > ( ) ;
131
131
}
132
+
133
+ #[ test]
134
+ fn test_const_forget ( ) {
135
+ const _: ( ) = forget ( 0i32 ) ;
136
+ const _: ( ) = forget ( Vec :: < Vec < Box < i32 > > > :: new ( ) ) ;
137
+
138
+ // Writing this function signature without const-forget
139
+ // triggers compiler errors:
140
+ // 1) That we use a non-const fn inside a const fn
141
+ // 2) without the forget, it complains about the destructor of Box
142
+ const fn const_forget_box < T > ( x : Box < T > ) {
143
+ forget ( x) ;
144
+ }
145
+
146
+ // Call the forget_box at runtime,
147
+ // as we can't const-construct a box yet.
148
+ const_forget_box ( Box :: new ( 0i32 ) ) ;
149
+ }
You can’t perform that action at this time.
0 commit comments