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// C++ include
4//#include <memory>
5
6namespace dbpp
7{
15 template <typename T, typename Args>
16 std::shared_ptr<T> factory(Args&& aArgs) {
17 return std::shared_ptr<T>{new T{ std::forward<Args>(aArgs) }};
18 }
19
27 template <typename T, typename... Args>
28 std::shared_ptr<T> factoryCreator(Args &&...aArgs) {
29 return std::shared_ptr<T>{new T{ std::forward<Args>(aArgs)... }};
30 }
31
40 template<typename T, typename ...Args>
41 decltype(auto) create(Args&& ...args)
42 {
43 // return object by value temporary (copy elison C++17)
44 return T{ std::forward<Args>(args)... };
45 }
46}//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