mirror of
https://github.com/NixOS/nix
synced 2025-07-06 21:41:48 +02:00
Merge pull request #8839 from obsidiansystems/string-context-7479
Refactor Raw pattern, part of #7479
This commit is contained in:
commit
665ad4f7c5
29 changed files with 355 additions and 334 deletions
30
src/libutil/variant-wrapper.hh
Normal file
30
src/libutil/variant-wrapper.hh
Normal file
|
@ -0,0 +1,30 @@
|
|||
#pragma once
|
||||
///@file
|
||||
|
||||
// not used, but will be used by callers
|
||||
#include <variant>
|
||||
|
||||
/**
|
||||
* Force the default versions of all constructors (copy, move, copy
|
||||
* assignment).
|
||||
*/
|
||||
#define FORCE_DEFAULT_CONSTRUCTORS(CLASS_NAME) \
|
||||
CLASS_NAME(const CLASS_NAME &) = default; \
|
||||
CLASS_NAME(CLASS_NAME &) = default; \
|
||||
CLASS_NAME(CLASS_NAME &&) = default; \
|
||||
\
|
||||
CLASS_NAME & operator =(const CLASS_NAME &) = default; \
|
||||
CLASS_NAME & operator =(CLASS_NAME &) = default;
|
||||
|
||||
/**
|
||||
* Make a wrapper constructor. All args are forwarded to the
|
||||
* construction of the "raw" field. (Which we assume is the only one.)
|
||||
*
|
||||
* The moral equivalent of `using Raw::Raw;`
|
||||
*/
|
||||
#define MAKE_WRAPPER_CONSTRUCTOR(CLASS_NAME) \
|
||||
FORCE_DEFAULT_CONSTRUCTORS(CLASS_NAME) \
|
||||
\
|
||||
CLASS_NAME(auto &&... arg) \
|
||||
: raw(std::forward<decltype(arg)>(arg)...) \
|
||||
{ }
|
Loading…
Add table
Add a link
Reference in a new issue