Ответ 1
Действительно ли это код С++ 11?
Нет. Только lambdas в области блока могут иметь списки захвата:
С++ 11 5.1.2/9 Лямбда-выражение, наименьшей границей которого является область видимости блока, является локальным лямбда-выражением; любое другое лямбда-выражение не должно иметь список захвата в своем лямбда-интродаторе.
Итак, похоже, это расширение GCC. (Как отмечается в комментариях, это открытая проблема, поэтому вполне может стать стандартным в один прекрасный день.)
почему я должен использовать
this->
при обращении к элементу a?
У вас нет, по крайней мере, версии GCC, которую я использую: http://ideone.com/K857VC.