@@ -719,6 +719,151 @@ namespace detail
719719
720720template <class L , class V > struct mp_find_impl ;
721721
722+ #if defined(BOOST_MP11_HAS_VARIABLE_TEMPLATE) && defined(BOOST_MP11_HAS_IN_CLASS_EXPLICIT_SPECIALIZATIONS)
723+ template <template <class ...> class L ,
724+ class T0 , class T1 , class T2 , class T3 , class T4 ,
725+ class T5 , class T6 , class T7 , class T8 , class T9 ,
726+ class T10 , class T11 , class T12 , class T13 , class T14 ,
727+ class T15 , class T16 , class T17 , class T18 , class T19 ,
728+ class T20 , class T21 , class T22 , class T23 , class T24 ,
729+ class T25 , class T26 , class T27 , class T28 , class T29 ,
730+ class T30 , class T31 , class T32 , class T33 , class T34 ,
731+ class T35 , class T36 , class T37 , class T38 , class T39 ,
732+ class T40 , class T41 , class T42 , class T43 , class T44 ,
733+ class T45 , class T46 , class T47 , class T48 , class T49 ,
734+ class T50 , class T51 , class T52 , class T53 , class T54 ,
735+ class T55 , class T56 , class T57 , class T58 , class T59 ,
736+ class T60 , class T61 , class T62 , class T63 , class T64 ,
737+ class T65 , class T66 , class T67 , class T68 , class T69 ,
738+ class T70 , class T71 , class T72 , class T73 , class T74 ,
739+ class T75 , class T76 , class T77 , class T78 , class T79 ,
740+ class T80 , class T81 , class T82 , class T83 , class T84 ,
741+ class T85 , class T86 , class T87 , class T88 , class T89 ,
742+ class T90 , class T91 , class T92 , class T93 , class T94 ,
743+ class T95 , class T96 , class T97 , class T98 , class T99 ,
744+ class ...T, class V >
745+ struct mp_find_impl <L<
746+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9,
747+ T10, T11, T12, T13, T14, T15, T16, T17, T18, T19,
748+ T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
749+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
750+ T40, T41, T42, T43, T44, T45, T46, T47, T48, T49,
751+ T50, T51, T52, T53, T54, T55, T56, T57, T58, T59,
752+ T60, T61, T62, T63, T64, T65, T66, T67, T68, T69,
753+ T70, T71, T72, T73, T74, T75, T76, T77, T78, T79,
754+ T80, T81, T82, T83, T84, T85, T86, T87, T88, T89,
755+ T90, T91, T92, T93, T94, T95, T96, T97, T98, T99,
756+ T...>, V> {
757+ private:
758+ template <class >
759+ static const int value = mp_find_impl<L<T...>, V>::type::value + 100 ;
760+
761+ template <> static const int value<T0> = 0 ;
762+ template <> static const int value<T1> = 1 ;
763+ template <> static const int value<T2> = 2 ;
764+ template <> static const int value<T3> = 3 ;
765+ template <> static const int value<T4> = 4 ;
766+ template <> static const int value<T5> = 5 ;
767+ template <> static const int value<T6> = 6 ;
768+ template <> static const int value<T7> = 7 ;
769+ template <> static const int value<T8> = 8 ;
770+ template <> static const int value<T9> = 9 ;
771+ template <> static const int value<T10> = 10 ;
772+ template <> static const int value<T11> = 11 ;
773+ template <> static const int value<T12> = 12 ;
774+ template <> static const int value<T13> = 13 ;
775+ template <> static const int value<T14> = 14 ;
776+ template <> static const int value<T15> = 15 ;
777+ template <> static const int value<T16> = 16 ;
778+ template <> static const int value<T17> = 17 ;
779+ template <> static const int value<T18> = 18 ;
780+ template <> static const int value<T19> = 19 ;
781+ template <> static const int value<T20> = 20 ;
782+ template <> static const int value<T21> = 21 ;
783+ template <> static const int value<T22> = 22 ;
784+ template <> static const int value<T23> = 23 ;
785+ template <> static const int value<T24> = 24 ;
786+ template <> static const int value<T25> = 25 ;
787+ template <> static const int value<T26> = 26 ;
788+ template <> static const int value<T27> = 27 ;
789+ template <> static const int value<T28> = 28 ;
790+ template <> static const int value<T29> = 29 ;
791+ template <> static const int value<T30> = 30 ;
792+ template <> static const int value<T31> = 31 ;
793+ template <> static const int value<T32> = 32 ;
794+ template <> static const int value<T33> = 33 ;
795+ template <> static const int value<T34> = 34 ;
796+ template <> static const int value<T35> = 35 ;
797+ template <> static const int value<T36> = 36 ;
798+ template <> static const int value<T37> = 37 ;
799+ template <> static const int value<T38> = 38 ;
800+ template <> static const int value<T39> = 39 ;
801+ template <> static const int value<T40> = 40 ;
802+ template <> static const int value<T41> = 41 ;
803+ template <> static const int value<T42> = 42 ;
804+ template <> static const int value<T43> = 43 ;
805+ template <> static const int value<T44> = 44 ;
806+ template <> static const int value<T45> = 45 ;
807+ template <> static const int value<T46> = 46 ;
808+ template <> static const int value<T47> = 47 ;
809+ template <> static const int value<T48> = 48 ;
810+ template <> static const int value<T49> = 49 ;
811+ template <> static const int value<T50> = 50 ;
812+ template <> static const int value<T51> = 51 ;
813+ template <> static const int value<T52> = 52 ;
814+ template <> static const int value<T53> = 53 ;
815+ template <> static const int value<T54> = 54 ;
816+ template <> static const int value<T55> = 55 ;
817+ template <> static const int value<T56> = 56 ;
818+ template <> static const int value<T57> = 57 ;
819+ template <> static const int value<T58> = 58 ;
820+ template <> static const int value<T59> = 59 ;
821+ template <> static const int value<T60> = 60 ;
822+ template <> static const int value<T61> = 61 ;
823+ template <> static const int value<T62> = 62 ;
824+ template <> static const int value<T63> = 63 ;
825+ template <> static const int value<T64> = 64 ;
826+ template <> static const int value<T65> = 65 ;
827+ template <> static const int value<T66> = 66 ;
828+ template <> static const int value<T67> = 67 ;
829+ template <> static const int value<T68> = 68 ;
830+ template <> static const int value<T69> = 69 ;
831+ template <> static const int value<T70> = 70 ;
832+ template <> static const int value<T71> = 71 ;
833+ template <> static const int value<T72> = 72 ;
834+ template <> static const int value<T73> = 73 ;
835+ template <> static const int value<T74> = 74 ;
836+ template <> static const int value<T75> = 75 ;
837+ template <> static const int value<T76> = 76 ;
838+ template <> static const int value<T77> = 77 ;
839+ template <> static const int value<T78> = 78 ;
840+ template <> static const int value<T79> = 79 ;
841+ template <> static const int value<T80> = 80 ;
842+ template <> static const int value<T81> = 81 ;
843+ template <> static const int value<T82> = 82 ;
844+ template <> static const int value<T83> = 83 ;
845+ template <> static const int value<T84> = 84 ;
846+ template <> static const int value<T85> = 85 ;
847+ template <> static const int value<T86> = 86 ;
848+ template <> static const int value<T87> = 87 ;
849+ template <> static const int value<T88> = 88 ;
850+ template <> static const int value<T89> = 89 ;
851+ template <> static const int value<T90> = 90 ;
852+ template <> static const int value<T91> = 91 ;
853+ template <> static const int value<T92> = 92 ;
854+ template <> static const int value<T93> = 93 ;
855+ template <> static const int value<T94> = 94 ;
856+ template <> static const int value<T95> = 95 ;
857+ template <> static const int value<T96> = 96 ;
858+ template <> static const int value<T97> = 97 ;
859+ template <> static const int value<T98> = 98 ;
860+ template <> static const int value<T99> = 99 ;
861+
862+ public:
863+ using type = mp_size_t <value<V>>;
864+ };
865+ #endif
866+
722867#if BOOST_MP11_CLANG && defined( BOOST_MP11_HAS_FOLD_EXPRESSIONS )
723868
724869struct mp_index_holder
0 commit comments