
The only time that I get warning 6385 is when id is equal to or exceeds the size of the array. It is a little strange in that the warning only occurs when the line beginning with _ASSERTE is added. There should be an error even without the debug assertion. Nevertheless this suggests that there may be a case where re_detail::get_default_class_id(() returns a value in excess of 18 leading to the warning. The following pseudo-code compiles without warning or error and has the slight advantage if protecting release as well as debug builds: std::size_t id = (1 + re_detail::get_default_class_id(p1, p2)); if(id < sizeof(masks) / sizeof(masks[0])) return masks[id]; return masks[0];
I still think that's redundant code, but I'll make the change anyway.
Understood, but what other warnings were you seeing? <
Here is the build log which already incorporates the above code fragment: http://users.erols.com/gmgarner/boost/BuildLog_regex.txt.
OK thanks, there's only one warning in there I hadn't seen before (and isn't fixed now), and that's this one: h:\source code\boost\boost_1_33_1\boost\type_traits\is_member_function_pointer.hpp(67) : error C6334: sizeof operator applied to an expression with an operator might yield unexpected results Looking up the warning on MSDN it says: "This warning indicates a misuse of the sizeof operator. The sizeof operator, when applied to an expression, yields the size of the type of the resulting expression. " But that's exactly what we want it to do! So no fixes possible there. Thanks for all the feedback on this, John.