CARLA
LibCarla
source
carla
MoveHandler.h
Go to the documentation of this file.
1
// Copyright (c) 2019 Computer Vision Center (CVC) at the Universitat Autonoma
2
// de Barcelona (UAB).
3
//
4
// This work is licensed under the terms of the MIT license.
5
// For a copy, see <https://opensource.org/licenses/MIT>.
6
7
#pragma once
8
9
#include <type_traits>
10
#include <utility>
11
12
namespace
carla
{
13
namespace
detail {
14
15
template
<
typename
FunctorT>
16
struct
MoveWrapper
:
FunctorT
{
17
MoveWrapper
(
FunctorT
&&f) :
FunctorT
(
std
::move(f)) {}
18
19
MoveWrapper
(
MoveWrapper
&&) =
default
;
20
MoveWrapper
&
operator=
(
MoveWrapper
&&) =
default
;
21
22
MoveWrapper
(
const
MoveWrapper
&);
23
MoveWrapper
&
operator=
(
const
MoveWrapper
&);
24
};
25
26
}
// namespace detail
27
28
/// Hack to trick asio into accepting move-only handlers, if the handler were
29
/// actually copied it would result in a link error.
30
///
31
/// @see https://stackoverflow.com/a/22891509.
32
template
<
typename
FunctorT>
33
auto
MoveHandler
(
FunctorT
&&func) {
34
using
F =
typename
std::decay<FunctorT>::type;
35
return
detail::MoveWrapper<F>
{std::move(func)};
36
}
37
38
}
// namespace carla
std
Definition:
CarlaRecorderCollision.h:30
carla::detail::MoveWrapper::MoveWrapper
MoveWrapper(FunctorT &&f)
Definition:
MoveHandler.h:17
carla::detail::MoveWrapper::operator=
MoveWrapper & operator=(MoveWrapper &&)=default
FunctorT
carla
This file contains definitions of common data structures used in traffic manager. ...
Definition:
Carla.cpp:133
carla::detail::MoveWrapper
Definition:
MoveHandler.h:16
carla::MoveHandler
auto MoveHandler(FunctorT &&func)
Hack to trick asio into accepting move-only handlers, if the handler were actually copied it would re...
Definition:
MoveHandler.h:33
Generated by
1.8.13