Для некоторых MinGW компиляторов const | const не является const!
Пример:
//код взят из оригинальной библиотеки Boost
// Parse using appropriate flags
using namespace rapidxml;
const int f_tws = parse_normalize_whitespace
| parse_trim_whitespace; //ок
const int f_c = parse_comment_nodes; //ок
xml_document<Ch> doc;
if (flags & no_comments) {
if (flags & trim_whitespace)
doc.BOOST_NESTED_TEMPLATE parse<f_tws>(&v.front());
else
doc.BOOST_NESTED_TEMPLATE parse<0>(&v.front());
} else {
if (flags & trim_whitespace)
doc.BOOST_NESTED_TEMPLATE parse<f_tws | f_c>(&v.front()); // f_tws | f_c вызовет ошибку компиляции MinGW
else
doc.BOOST_NESTED_TEMPLATE parse<f_c>(&v.front());
}
f_tws | f_c не может быть использован как const
поэтому нужно создавать по постоянной на каждое "или": const int f_tws_c = parse_normalize_whitespace
| parse_trim_whitespace | parse_comment_nodes;
f_tws_c использовать вместо выражения f_tws | f_c.