| Index: base/tuple.h
|
| diff --git a/base/tuple.h b/base/tuple.h
|
| index 4408074335b3bd2c28b5ee5719a0b63ba262971c..41c6a00191971e4eabfd2aa6dbf6d3308a6b0eca 100644
|
| --- a/base/tuple.h
|
| +++ b/base/tuple.h
|
| @@ -40,6 +40,50 @@ struct IndexSequence {};
|
| template <size_t... Ns>
|
| struct MakeIndexSequenceImpl;
|
|
|
| +#if defined(_PREFAST_) && defined(OS_WIN)
|
| +
|
| +// Work around VC++ 2013 /analyze internal compiler error:
|
| +// https://connect.microsoft.com/VisualStudio/feedback/details/1053626
|
| +
|
| +template <> struct MakeIndexSequenceImpl<0> {
|
| + using Type = IndexSequence<>;
|
| +};
|
| +template <> struct MakeIndexSequenceImpl<1> {
|
| + using Type = IndexSequence<0>;
|
| +};
|
| +template <> struct MakeIndexSequenceImpl<2> {
|
| + using Type = IndexSequence<0,1>;
|
| +};
|
| +template <> struct MakeIndexSequenceImpl<3> {
|
| + using Type = IndexSequence<0,1,2>;
|
| +};
|
| +template <> struct MakeIndexSequenceImpl<4> {
|
| + using Type = IndexSequence<0,1,2,3>;
|
| +};
|
| +template <> struct MakeIndexSequenceImpl<5> {
|
| + using Type = IndexSequence<0,1,2,3,4>;
|
| +};
|
| +template <> struct MakeIndexSequenceImpl<6> {
|
| + using Type = IndexSequence<0,1,2,3,4,5>;
|
| +};
|
| +template <> struct MakeIndexSequenceImpl<7> {
|
| + using Type = IndexSequence<0,1,2,3,4,5,6>;
|
| +};
|
| +template <> struct MakeIndexSequenceImpl<8> {
|
| + using Type = IndexSequence<0,1,2,3,4,5,6,7>;
|
| +};
|
| +template <> struct MakeIndexSequenceImpl<9> {
|
| + using Type = IndexSequence<0,1,2,3,4,5,6,7,8>;
|
| +};
|
| +template <> struct MakeIndexSequenceImpl<10> {
|
| + using Type = IndexSequence<0,1,2,3,4,5,6,7,8,9>;
|
| +};
|
| +template <> struct MakeIndexSequenceImpl<11> {
|
| + using Type = IndexSequence<0,1,2,3,4,5,6,7,8,9,10>;
|
| +};
|
| +
|
| +#else // defined(WIN) && defined(_PREFAST_)
|
| +
|
| template <size_t... Ns>
|
| struct MakeIndexSequenceImpl<0, Ns...> {
|
| using Type = IndexSequence<Ns...>;
|
| @@ -49,6 +93,8 @@ template <size_t N, size_t... Ns>
|
| struct MakeIndexSequenceImpl<N, Ns...>
|
| : MakeIndexSequenceImpl<N - 1, N - 1, Ns...> {};
|
|
|
| +#endif // defined(WIN) && defined(_PREFAST_)
|
| +
|
| template <size_t N>
|
| using MakeIndexSequence = typename MakeIndexSequenceImpl<N>::Type;
|
|
|
|
|