mirror of
https://github.com/matrix-construct/construct
synced 2025-02-16 16:50:12 +01:00
ircd::util: Add the construction utility device.
This commit is contained in:
parent
48dfc78473
commit
4c924b2a43
2 changed files with 38 additions and 0 deletions
37
include/ircd/util/construction.h
Normal file
37
include/ircd/util/construction.h
Normal file
|
@ -0,0 +1,37 @@
|
|||
// Matrix Construct
|
||||
//
|
||||
// Copyright (C) Matrix Construct Developers, Authors & Contributors
|
||||
// Copyright (C) 2016-2019 Jason Volk <jason@zemos.net>
|
||||
//
|
||||
// Permission to use, copy, modify, and/or distribute this software for any
|
||||
// purpose with or without fee is hereby granted, provided that the above
|
||||
// copyright notice and this permission notice is present in all copies. The
|
||||
// full license for this software is available in the LICENSE file.
|
||||
|
||||
#pragma once
|
||||
#define HAVE_IRCD_UTIL_CONSTRUCTION_H
|
||||
|
||||
namespace ircd
|
||||
{
|
||||
inline namespace util
|
||||
{
|
||||
struct construction;
|
||||
}
|
||||
}
|
||||
|
||||
struct ircd::util::construction
|
||||
{
|
||||
template<class F,
|
||||
class... A>
|
||||
construction(F&&, A&&...);
|
||||
};
|
||||
|
||||
template<class F,
|
||||
class... A>
|
||||
extern inline
|
||||
__attribute__((always_inline, gnu_inline, artificial))
|
||||
ircd::util::construction::construction(F&& f,
|
||||
A&&... a)
|
||||
{
|
||||
f(std::forward<A>(a)...);
|
||||
}
|
|
@ -32,6 +32,7 @@ namespace ircd
|
|||
|
||||
#include "typography.h"
|
||||
#include "unit_literal.h"
|
||||
#include "construction.h"
|
||||
#include "unwind.h"
|
||||
#include "reentrance.h"
|
||||
#include "enum.h"
|
||||
|
|
Loading…
Add table
Reference in a new issue