Чтобы использовать динамическое регулярное выражение, см. мой обновленный код:
new RegExp("\\b" + lookup + "\\b").test(textbox.value)
Ваш конкретный пример обратный:
alert((/\b(2)\b/g).test(lookup));
Это совершенно четко определено:
void something(int *x) {
reinterpret_cast<Point*>(x)->y = 42;
}
Point
объект (p
) и x
участник являются взаимозаменяемыми указателем, от [basic.compound]:
Два объекта и b взаимозаменяемые указателем если:
- [...]
- каждый - объект стандартного класса макета, и другой первый нестатический элемент данных того объекта, или, если объект не имеет никаких нестатических элементов данных, какого-либо подобъекта базового класса того объекта ([class.mem]), или:
- [...]
, Если два объекта являются взаимозаменяемыми указателем, то у них есть тот же адрес, и возможно получить указатель на один от указателя до другого через
reinterpret_cast
.
, Что reinterpret_cast<Point*>(x)
допустимо и действительно заканчивается с указателем, который указывает на p
. Следовательно, изменение это непосредственно прекрасно. Как Вы видите, часть стандартного расположения и первая нестатическая часть элемента данных являются значительными.
, Хотя это не похоже на рассматриваемые компиляторы, оптимизируют дополнительную загрузку, если Вы передаете указатель на p.y
в и возврат p.x
вместо этого.