Приветствую.
Сначала написал многа букв в вопросе, но решил спросить просто кодом раз уж всегда требуют его - почему через обычный метод AutoCommit выполняется раньше всех и все работает, а через лямбду нет ибо порядок инициализации не соблюдается???
class CParamsTXT
{
private:
const bool bAutoCommit;
IBPP::Transaction tr;
IBPP::Statement st;
CDefFile * pCfg;
const string Typ, Section, id_bank;
bool getAutoCommit(IBPP::Transaction tr)
{
fprintf(stderr, "\n111 111\n");
const bool rt = !tr->Started();
if (rt) tr->Start();
return rt;
}
protected:
string GetParam(string & param, string Field, string Ident, string Default = "")
{ ... }
public:
const string DateFormat, DatePoint, DecPoint, codepage;
vector<string> svF;
const char cNote;
CParamsTXT(CDefFile * pCfg_, IBPP::Transaction tr_, IBPP::Statement st_, string Typ_, string Section_, string id_bank_, string DateFormat_, string DatePoint_, string DecPoint_, string codepage_, string Note_)
:
bAutoCommit([](IBPP::Transaction tr_){
fprintf(stderr, "\n111 222\n");
const bool rt = !tr_->Started();
if (rt) tr_->Start();
return rt;}),
// bAutoCommit(getAutoCommit(tr_)),
tr(tr_), st(st_), pCfg(pCfg_),
Typ(Typ_), Section(Section_), id_bank(id_bank_),
DateFormat(GetParam(DateFormat_, "date_format", "DateFormat", "d/m/y")),
DatePoint(GetParam(DatePoint_, "date_point", "DatePoint", "/")),
DecPoint(GetParam(DecPoint_, "dec_point", "DecPoint", ".")),
codepage(GetParam(codepage_, "codepage", "codepage", "DOS")),
cNote(GetParam(Note_, "note", "NoteTXT", "")[0])
{ }