cc_tools_qt
Common Environment for Protocol Analysis.
Loading...
Searching...
No Matches
ret_unique_ptr.h
1//
2// Copyright 2017 - 2024 (C). Alex Robenko. All rights reserved.
3//
4
5// This file is free software: you can redistribute it and/or modify
6// it under the terms of the GNU General Public License as published by
7// the Free Software Foundation, either version 3 of the License, or
8// (at your option) any later version.
9//
10// This program is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18
19#pragma once
20
21#if !defined(CC_MOVE_UNIQUE_PTR_ON_RETURN) && defined(__clang__)
22#if (__clang_major__ < 4) && (__clang_minor__ <= 8)
23#define CC_MOVE_UNIQUE_PTR_ON_RETURN
24#endif // #if (__clang_major__ < 4) && (__clang_minor__ <= 8)
25#endif // #if !defined(CC_MOVE_UNIQUE_PTR_ON_RETURN) && defined(__clang__)
26
27
28#if !defined(CC_MOVE_UNIQUE_PTR_ON_RETURN) && !defined(__clang__) && defined(__GNUC__)
29#if __GNUC__ < 5
30#define CC_MOVE_UNIQUE_PTR_ON_RETURN
31#endif // #if __GNUC__ < 5
32#endif // #if !defined(CC_MOVE_UNIQUE_PTR_ON_RETURN) && !defined(__clang__) && defined(__GNUC__)
33
34#ifdef CC_MOVE_UNIQUE_PTR_ON_RETURN
35#define CC_RET_UNIQUE_PTR(p_) std::move(p_)
36#else // #ifdef CC_MOVE_UNIQUE_PTR_ON_RETURN
37#define CC_RET_UNIQUE_PTR(p_) p_
38#endif // #ifdef CC_MOVE_UNIQUE_PTR_ON_RETURN
39
40