mlpack
add_visitor_impl.hpp
Go to the documentation of this file.
1 
12 #ifndef MLPACK_METHODS_ANN_VISITOR_ADD_VISITOR_IMPL_HPP
13 #define MLPACK_METHODS_ANN_VISITOR_ADD_VISITOR_IMPL_HPP
14 
15 // In case it hasn't been included yet.
16 #include "add_visitor.hpp"
17 
18 namespace mlpack {
19 namespace ann {
20 
22 template<typename... CustomLayers>
23 template<typename T>
25  newLayer(std::move(newLayer))
26 {
27  /* Nothing to do here. */
28 }
29 
30 template<typename... CustomLayers>
31 template<typename LayerType>
32 inline void AddVisitor<CustomLayers...>::operator()(LayerType* layer) const
33 {
34  LayerAdd<LayerType>(layer);
35 }
36 
37 template<typename... CustomLayers>
38 inline void AddVisitor<CustomLayers...>::operator()(MoreTypes layer) const
39 {
40  layer.apply_visitor(*this);
41 }
42 
43 template<typename... CustomLayers>
44 template<typename T>
45 inline typename std::enable_if<
46  HasAddCheck<T, void(T::*)(LayerTypes<CustomLayers...>)>::value, void>::type
48 {
49  layer->Add(newLayer);
50 }
51 
52 template<typename... CustomLayers>
53 template<typename T>
54 inline typename std::enable_if<
55  !HasAddCheck<T, void(T::*)(LayerTypes<CustomLayers...>)>::value, void>::type
56 AddVisitor<CustomLayers...>::LayerAdd(T* /* layer */) const
57 {
58  /* Nothing to do here. */
59 }
60 
61 } // namespace ann
62 } // namespace mlpack
63 
64 #endif
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
Definition: pointer_wrapper.hpp:23
AddVisitor(T newLayer)
Exposes the Add() method of the given module.
Definition: add_visitor_impl.hpp:24
AddVisitor exposes the Add() method of the given module.
Definition: add_visitor.hpp:28
void operator()(LayerType *layer) const
Exposes the Add() method.
Definition: add_visitor_impl.hpp:32