Lambda capturando objeto constexpr

O GCC 4.7.2 compila isso:

constexpr int i = 5;
[]{ std::integral_constant< int, i >(); }; // nonstandard: i not captured

mas não isso:

constexpr int i = 5;
[&i]{ std::integral_constant< int, i >(); }; // GCC says i not constexpr

Este último exemplo parece-me correcto, segundo C ++ 11 §5.1.2 / 15:

Uma entidade é capturada por referência se for implicita ou explicitamente capturada, mas não capturada por cópia. Não é especificado se membros de dados não-estáticos adicionais sem nome são declarados no tipo de fechamento para entidades capturadas por referência.

Parece que o objeto capturadoi dentro do lambda refere-se à variável no escopo anexo, que éconstexpr, não apenas umconst referência.

O padrão diz explicitamente que o uso de uma captura por valor é transformado em um uso do membro correspondente do objeto lambda. E eu acho que 5.1.2 sugere que minha interpretação está correta.

Existe alguma coisa que diz explicitamente que uma captura por referência se refere ao objeto no escopo ou a uma referência?

questionAnswers(2)

yourAnswerToTheQuestion