есть такая проблемма:
#include <boost/format.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/home/phoenix/object/construct.hpp>
#include <boost/spirit/include/phoenix_scope.hpp>
using namespace boost;
using namespace boost::phoenix;
using namespace boost::phoenix::arg_names;
using namespace boost::phoenix::local_names;
int main(int argc, char *argv[])
{
boost::format fmt("argument: %1%");
std::string test("test");
std::cerr << ( arg1 % arg2 )(fmt, test) << std::endl; //работает
std::cerr << ( construct<boost::format>(arg1) )("here i'am") << std::endl; // работает
std::cerr << ( construct<boost::format>(arg1) % arg2 )("construct arg: %1%", test) << std::endl; //НЕ работает
//в дополнение
//работает
let( _a = construct<boost::format>(arg1) )
[
std::cerr << _a % arg2 << std::endl
]("working: %1%", test );
//НЕ работает
std::cerr << ((
let( _a = construct<boost::format>(arg1) )
[
_a % arg2
] ) ("error: %1%", test ))
<< std::endl;
}
Все что не работает компилится, но где-то портится память — все падает.
что я упустил?
Здравствуйте, jerry_ru, Вы писали:
_>_>#include <boost/spirit/include/phoenix_core.hpp>
_>#include <boost/spirit/include/phoenix_operator.hpp>
_>#include <boost/spirit/home/phoenix/object/construct.hpp>
_>#include <boost/spirit/include/phoenix_scope.hpp>
_>
_>Все что не работает компилится, но где-то портится память — все падает.
На всякий случай — с новым фениксом из 1.47.0 то же самое?
Здравствуйте, jazzer, Вы писали:
J>На всякий случай — с новым фениксом из 1.47.0 то же самое?
проверил — тоже самое, видимо что-то с пониманием. А ведь создание объекта в функторе это та самая фича которую хочется использовать