📄 indirect.h
字号:
template<typename T_container>CartesianProduct<TinyVector<int,10>,T_container,10>indexSet(const T_container& container0, const T_container& container1, const T_container& container2, const T_container& container3, const T_container& container4, const T_container& container5, const T_container& container6, const T_container& container7, const T_container& container8, const T_container& container9){ return CartesianProduct<TinyVector<int,10>,T_container,10>( const_cast<T_container&>(container0), const_cast<T_container&>(container1), const_cast<T_container&>(container2), const_cast<T_container&>(container3), const_cast<T_container&>(container4), const_cast<T_container&>(container5), const_cast<T_container&>(container6), const_cast<T_container&>(container7), const_cast<T_container&>(container8), const_cast<T_container&>(container9));}template<typename T_container>CartesianProduct<TinyVector<int,11>,T_container,11>indexSet(const T_container& container0, const T_container& container1, const T_container& container2, const T_container& container3, const T_container& container4, const T_container& container5, const T_container& container6, const T_container& container7, const T_container& container8, const T_container& container9, const T_container& container10){ return CartesianProduct<TinyVector<int,11>,T_container,11>( const_cast<T_container&>(container0), const_cast<T_container&>(container1), const_cast<T_container&>(container2), const_cast<T_container&>(container3), const_cast<T_container&>(container4), const_cast<T_container&>(container5), const_cast<T_container&>(container6), const_cast<T_container&>(container7), const_cast<T_container&>(container8), const_cast<T_container&>(container9), const_cast<T_container&>(container10));}// Mixture of singletons and containers, e.g. A[indexSet(I,3,K)]// cp_findContainerType<T1,T2,T3,...,Tn>::T_container// The set of parameters T1, T2, T3, ... Tn is a mixture of// int and T_container. This traits class finds the container// type, and sets T_container.//// e.g. cp_findContainerType<int,int,list<int>,int>::T_container is list<int>// cp_findContainerType<int,deque<int>,deque<int>>::T_container // is deque<int>template<typename T1, typename T2, typename T3=int, typename T4=int, typename T5=int, typename T6=int, typename T7=int, typename T8=int, typename T9=int, typename T10=int, typename T11=int>struct cp_findContainerType { typedef T1 T_container;};template<typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>struct cp_findContainerType<int,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11> { typedef _bz_typename cp_findContainerType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11>::T_container T_container;};// The cp_traits class handles promotion of singleton integers to// containers. It takes two template parameters:// T = argument type// T2 = container type// If T is an integer, then a container of type T2 is created and the// integer is inserted. This container is returned.// Otherwise, T is assumed to be the same type as T2, and the original// container is returned.template<typename T, typename T2>struct cp_traits { typedef T T_container; static const T_container& make(const T& x) { return x; }};template<typename T2>struct cp_traits<int,T2> { typedef T2 T_container; static T2 make(int x) { T2 singleton; singleton.push_back(x); return singleton; }};// These versions of indexSet() allow mixtures of integer// and container arguments. At least one integer must be// specified.template<typename T1, typename T2>CartesianProduct<TinyVector<int,2>, _bz_typename cp_findContainerType<T1,T2>::T_container,2> indexSet(const T1& c1, const T2& c2){ typedef _bz_typename cp_findContainerType<T1,T2>::T_container T_container; return CartesianProduct<TinyVector<int,2>, T_container, 2>( cp_traits<T1,T_container>::make(c1), cp_traits<T2,T_container>::make(c2));}template<typename T1, typename T2, typename T3>CartesianProduct<TinyVector<int,3>, _bz_typename cp_findContainerType<T1,T2,T3>::T_container, 3>indexSet(const T1& c1, const T2& c2, const T3& c3){ typedef _bz_typename cp_findContainerType<T1,T2,T3>::T_container T_container; return CartesianProduct<TinyVector<int,3>, T_container, 3>( cp_traits<T1,T_container>::make(c1), cp_traits<T2,T_container>::make(c2), cp_traits<T3,T_container>::make(c3));}template<typename T1, typename T2, typename T3, typename T4>CartesianProduct<TinyVector<int,4>, _bz_typename cp_findContainerType<T1,T2,T3,T4>::T_container, 4>indexSet(const T1& c1, const T2& c2, const T3& c3, const T4& c4){ typedef _bz_typename cp_findContainerType<T1,T2,T3,T4>::T_container T_container; return CartesianProduct<TinyVector<int,4>, T_container, 4>( cp_traits<T1,T_container>::make(c1), cp_traits<T2,T_container>::make(c2), cp_traits<T3,T_container>::make(c3), cp_traits<T4,T_container>::make(c4));}template<typename T1, typename T2, typename T3, typename T4, typename T5>CartesianProduct<TinyVector<int,5>, _bz_typename cp_findContainerType<T1,T2,T3,T4,T5>::T_container, 5>indexSet(const T1& c1, const T2& c2, const T3& c3, const T4& c4, const T5& c5){ typedef _bz_typename cp_findContainerType<T1,T2,T3,T4,T5>::T_container T_container; return CartesianProduct<TinyVector<int,5>, T_container, 5>( cp_traits<T1,T_container>::make(c1), cp_traits<T2,T_container>::make(c2), cp_traits<T3,T_container>::make(c3), cp_traits<T4,T_container>::make(c4), cp_traits<T5,T_container>::make(c5));}template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>CartesianProduct<TinyVector<int,6>, _bz_typename cp_findContainerType<T1,T2,T3,T4,T5,T6>::T_container, 6>indexSet(const T1& c1, const T2& c2, const T3& c3, const T4& c4, const T5& c5, const T6& c6){ typedef _bz_typename cp_findContainerType<T1,T2,T3,T4,T5,T6>::T_container T_container; return CartesianProduct<TinyVector<int,6>, T_container, 6>( cp_traits<T1,T_container>::make(c1), cp_traits<T2,T_container>::make(c2), cp_traits<T3,T_container>::make(c3), cp_traits<T4,T_container>::make(c4), cp_traits<T5,T_container>::make(c5), cp_traits<T6,T_container>::make(c6));}template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>CartesianProduct<TinyVector<int,7>, _bz_typename cp_findContainerType<T1,T2,T3,T4,T5,T6,T7>::T_container, 7>indexSet(const T1& c1, const T2& c2, const T3& c3, const T4& c4, const T5& c5, const T6& c6, const T7& c7){ typedef _bz_typename cp_findContainerType<T1,T2,T3,T4,T5,T6,T7>::T_container T_container; return CartesianProduct<TinyVector<int,7>, T_container, 7>( cp_traits<T1,T_container>::make(c1), cp_traits<T2,T_container>::make(c2), cp_traits<T3,T_container>::make(c3), cp_traits<T4,T_container>::make(c4), cp_traits<T5,T_container>::make(c5), cp_traits<T6,T_container>::make(c6), cp_traits<T7,T_container>::make(c7));}template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>CartesianProduct<TinyVector<int,8>, _bz_typename cp_findContainerType<T1,T2,T3,T4,T5,T6,T7,T8>::T_container, 8>indexSet(const T1& c1, const T2& c2, const T3& c3, const T4& c4, const T5& c5, const T6& c6, const T7& c7, const T8& c8){ typedef _bz_typename cp_findContainerType<T1,T2,T3,T4,T5,T6,T7,T8>::T_container T_container; return CartesianProduct<TinyVector<int,8>, T_container, 8>( cp_traits<T1,T_container>::make(c1), cp_traits<T2,T_container>::make(c2), cp_traits<T3,T_container>::make(c3), cp_traits<T4,T_container>::make(c4), cp_traits<T5,T_container>::make(c5), cp_traits<T6,T_container>::make(c6), cp_traits<T7,T_container>::make(c7), cp_traits<T8,T_container>::make(c8));}template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>CartesianProduct<TinyVector<int,9>, _bz_typename cp_findContainerType<T1,T2,T3,T4,T5,T6,T7,T8,T9>::T_container, 9>indexSet(const T1& c1, const T2& c2, const T3& c3, const T4& c4, const T5& c5, const T6& c6, const T7& c7, const T8& c8, const T9& c9){ typedef _bz_typename cp_findContainerType<T1,T2,T3,T4,T5,T6,T7,T8,T9>::T_container T_container; return CartesianProduct<TinyVector<int,9>, T_container, 9>( cp_traits<T1,T_container>::make(c1), cp_traits<T2,T_container>::make(c2), cp_traits<T3,T_container>::make(c3), cp_traits<T4,T_container>::make(c4), cp_traits<T5,T_container>::make(c5), cp_traits<T6,T_container>::make(c6), cp_traits<T7,T_container>::make(c7), cp_traits<T8,T_container>::make(c8), cp_traits<T9,T_container>::make(c9));}template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>CartesianProduct<TinyVector<int,10>, _bz_typename cp_findContainerType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10>::T_container, 10>indexSet(const T1& c1, const T2& c2, const T3& c3, const T4& c4, const T5& c5, const T6& c6, const T7& c7, const T8& c8, const T9& c9, const T10& c10){ typedef _bz_typename cp_findContainerType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10>::T_container T_container; return CartesianProduct<TinyVector<int,10>, T_container, 10>( cp_traits<T1,T_container>::make(c1), cp_traits<T2,T_container>::make(c2), cp_traits<T3,T_container>::make(c3), cp_traits<T4,T_container>::make(c4), cp_traits<T5,T_container>::make(c5), cp_traits<T6,T_container>::make(c6), cp_traits<T7,T_container>::make(c7), cp_traits<T8,T_container>::make(c8), cp_traits<T9,T_container>::make(c9), cp_traits<T10,T_container>::make(c10));}template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>CartesianProduct<TinyVector<int,11>, _bz_typename cp_findContainerType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11>::T_container, 11>indexSet(const T1& c1, const T2& c2, const T3& c3, const T4& c4, const T5& c5, const T6& c6, const T7& c7, const T8& c8, const T9& c9, const T10& c10, const T11& c11){ typedef _bz_typename cp_findContainerType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11>::T_container T_container; return CartesianProduct<TinyVector<int,11>, T_container, 11>( cp_traits<T1,T_container>::make(c1), cp_traits<T2,T_container>::make(c2), cp_traits<T3,T_container>::make(c3), cp_traits<T4,T_container>::make(c4), cp_traits<T5,T_container>::make(c5), cp_traits<T6,T_container>::make(c6), cp_traits<T7,T_container>::make(c7), cp_traits<T8,T_container>::make(c8), cp_traits<T9,T_container>::make(c9), cp_traits<T10,T_container>::make(c10), cp_traits<T11,T_container>::make(c11));}BZ_NAMESPACE_END#endif // BZ_ARRAY_INDIRECT_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -