Что такое <? = В С++?
Возможный дубликат:
Расширение C: <? и > ? операторов
Взгляните на главный ответ (по sclo) на проблему D этого Замятие в Google Code. Это С++-код, он должен быть скомпилирован и содержит такие выражения, как этот:
double& ret = F[mask][cur][b];
if(j==cur) {
ret<?=f(tmp,j,b||bad[i])+M[cur][i]; // WTF is <?= ???
}
Это не компилируется в моей Visual Studio 2008. Что означает <?=
?
Ответы
Ответ 1
Это расширение gcc: расширение C: <? и > ? Операторы
Последние руководства сказать:
Минимальные и максимальные операторы g++ ('<?
и' >?
) и их составные формы ('<?=
) и >?=
) устарели и теперь удалены из g++. Код с использованием этих операторов должен быть изменен для использования std::min
и std::max
вместо этого...
Ответ 2
Это просто недействительно С++. <
Возможно, это будет меньше, чем открытая угловая скобка для списка аргументов шаблона или начало орграфа, но не из тех, за которыми может следовать ?
, затем =
.
Ответ 3
Это теперь устаревшее расширение g++ для языка С++.
a <? b
является минимальным, возвращая меньшие числовые значения a и b;
a >? b
является максимальным, возвращая большее число числовых значений a и b.
Существуют также составные версии
<?=
и
>?=
которые также выполняют назначение.
Ответ 4
Он не компилируется также с GCC, и я никогда не слышал об операторе <?=
.
В любом случае я бы поставил под угрозу, что a<?=b
может иметь семантику вроде: a = (a<b) ? b : a
, но опять же, это просто предположение.