У меня возникают проблемы с вложенными блоками let в Boost Phoenix, когда «внутренняя» локальная переменная скрывает «внешнюю» локальную переменную. Даже на примере «Видимость» из документации here, как показано здесь:Переменная скрыта в блоках вложенных блоков в Boost Phoenix
#include <iostream>
#include <boost/phoenix.hpp>
namespace phoenix = boost::phoenix;
using namespace phoenix::local_names;
int main(int argc, char *argv[])
{
phoenix::let(_x = 1, _y = ", World")
[
phoenix::let(_x = "Hello") // hides the outer _x
[
std::cout << _x << _y // prints "Hello, World"
]
]();
return 0;
}
Я получаю ошибки, начиная с:
GCC: "error: function returning an array"
Clang: "error: function cannot return array type 'result_type' (aka 'char [6]')"
Кто-нибудь знает, как я могу «теневой» такой переменной в пределах объема внутреннего блока let в Фениксе? В настоящее время я использую Ubuntu 13.04 с моментальным снимком версии 4.8 GCC; Clang 3.2; Boost 1.49; а также Boost 1.53.
Несомненно. Спасибо за ввод. – user2023370
Ошибка теперь подана [здесь] (https://svn.boost.org/trac/boost/ticket/8564) – user2023370