construct_destruct.h
Go to the documentation of this file.
1 // Copyright 2021 gRPC authors.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #ifndef GRPC_CORE_LIB_GPRPP_CONSTRUCT_DESTRUCT_H
16 #define GRPC_CORE_LIB_GPRPP_CONSTRUCT_DESTRUCT_H
17 
19 
20 #include <new>
21 #include <utility>
22 
23 namespace grpc_core {
24 
25 // Call the destructor of p without having to name the type of p.
26 template <typename T>
27 void Destruct(T* p) {
28  p->~T();
29 }
30 
31 // Call the constructor of p without having to name the type of p and forward
32 // any arguments
33 template <typename T, typename... Args>
34 void Construct(T* p, Args&&... args) {
35  new (p) T(std::forward<Args>(args)...);
36 }
37 
38 } // namespace grpc_core
39 
40 #endif // GRPC_CORE_LIB_GPRPP_CONSTRUCT_DESTRUCT_H
grpc_core
Definition: call_metric_recorder.h:31
T
#define T(upbtypeconst, upbtype, ctype, default_value)
asyncio_get_stats.args
args
Definition: asyncio_get_stats.py:40
hpack_encoder_fixtures::Args
Args({0, 16384})
grpc_core::Construct
void Construct(T *p, Args &&... args)
Definition: construct_destruct.h:34
grpc_core::Destruct
void Destruct(T *p)
Definition: construct_destruct.h:27
port_platform.h


grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:58:54