DamBreak++ Wave Simulator 0.3
DamBreak++ Simulation Framework
Loading...
Searching...
No Matches
dbpp_FactoryHelpers.hpp
Go to the documentation of this file.
1#pragma once
2
3
4namespace dbpp
5{
13 template<typename T, typename Args>
14 std::shared_ptr<T> factory(Args&& aArgs) {
15 return std::shared_ptr<T>{new T{ std::forward<Args>(aArgs) }};
16 }
25 template<typename T, typename... Args>
26 std::shared_ptr<T> factoryCreator(Args &&...aArgs) {
27 return std::shared_ptr<T>{new T{ std::forward<Args>(aArgs)... }};
28 }
38 template<typename T, typename ...Args>
39 decltype(auto) create(Args&& ...args)
40 {
41 // return object by value temporary (copy elison C++17)
42 return T{ std::forward<Args>(args)... };
43 }
44}//End of namespace
Definition DamBreakProb.h:15
std::shared_ptr< T > factoryCreator(Args &&...aArgs)
Factory based on perfect-forwarding. Arguments can bind to any types (based on value categorie) to th...
Definition dbpp_FactoryHelpers.hpp:28
decltype(auto) create(Args &&...args)
factory helper (works even neither coping nor moving is allowed). NOTE decltype(auto) operates by val...
Definition dbpp_FactoryHelpers.hpp:41
std::shared_ptr< T > factory(Args &&aArgs)
Generic factory from an article. Forward reference can bind to factory parameters according to value ...
Definition dbpp_FactoryHelpers.hpp:16