Re: Static_object::construct

Janis Danisevskis <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <[email protected]>
Hi,

The

new (_i) T(...)

part is most likely a "placement new" ("most likely" because "new" can
be overloaded but I don't think this is the case here). That is, it
initializes an object of type T at the memory location given by the
pointer _i, calling its constructor.

The use of the ellipse declares ("typename... A") or unpacks
("A&&... args") a parameter pack. Read up on "variadic template
parameters" if this is new to you.
This means, "construct" can take any argument list that T has a
constructor for.

In short the cxx::forward allows the compiler to optimize argument
passing. Read up on "perfect forwarding in C++".

Why it may not have compiled in your eclipse project:
Variadic templates (...) as well as r-value references (&& (in fact here
&& specifies universal references rather than r-value references)) are
only available in C++ since c++11 so you might want to tell your
compiler to use this standard (e.g. g++ -std=c++11).

Hope this clarifies things a bit.

Janis

Am 08.05.2015 um 08:10 schrieb watermirror:
> hi, 
> 
> template< typename T >
> class Static_object
> {
> public:
> ....
>   template< typename... A >
>   T *construct(A&&... args)
>   { return new (_i) T(cxx::forward<A>(args)...); }
> ...
> };
> 
> this template class is defined in fiasco/src/types.h, what does the
> method 'construct' mean?
> i have tried to move this class to eclipse cdt project, but it can not
> be compiled correctly. how does this class be compiled in fiasco?
> 
> 
> _______________________________________________
> l4-hackers mailing list
> [email protected]
> http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.