mgcpp
A C++ Math Library Based on CUDA
type_erased.hpp
Go to the documentation of this file.
1 #ifndef TYPE_ERASED_HPP
2 #define TYPE_ERASED_HPP
3 
4 #include <memory>
5 
6 namespace mgcpp {
7 
8 struct static_any {
9  static_any() = default;
10 
11  template <typename T>
12  static_any(T data);
13 
14  template <typename T>
15  T get() const;
16 
17  struct concept {
18  virtual ~concept() = default;
19  };
20 
21  template <typename T>
22  struct model final : concept {
23  model(T x);
24  T data;
25  };
26 
27  std::shared_ptr<concept const> m;
28 };
29 
30 } // namespace mgcpp
31 
33 #endif // TYPE_ERASED_HPP
Definition: adapter_base.hpp:12
Definition: type_erased.hpp:8
Definition: type_erased.hpp:22
Definition: type_erased.hpp:17
T data
Definition: type_erased.hpp:24
std::shared_ptr< concept const > m
Definition: type_erased.hpp:27
virtual ~concept()=default
static_any()=default