Захват this-указателя в лямбда-оболочке вокруг рекурсивной функции

У меня есть шаблон классаWrap с рекурсивной функцией-членомtest(int) что я хочу перейти на алгоритм STL с лямбда (std::accumulate в коде ниже).

Если я использую список захвата по умолчанию=и сделай мою рекурсивную функцию meberstatic, все в порядке и получить результат, который я хочу.

Однако, если я сделаю это нестатической функцией-членом, и Visual C ++, и gcc 4.7.2 пожалуются на унифицированнуюthisуказатель, если я не квалифицирую свой рекурсивный вызов как.this->test()

#include 
#include 
#include 

template
struct Wrap 
{
   static int test1(int depth)
   {
      std::vector v = { 0, 1, 2, 3 };
      return depth == 0? 1 : std::accumulate(v.begin(), v.end(), int(0), [=](int sub, int const&) {
         return sub + test1(depth - 1);
      });   
   }

   int test2(int depth)
   {
      std::vector v = { 0, 1, 2, 3 };
      return depth == 0? 1 : std::accumulate(v.begin(), v.end(), int(0), [=](int sub, int const&) {
         return sub + /*this->*/test2(depth - 1);
      });   
   }   
};

int main()
{
   std::cout < Wrap

Ответы на вопрос(1)

Ваш ответ на вопрос