Привязка временного к lvalue ссылке

Увеличьте величину i для цикла и затем уменьшите его при необходимости в нем.

for i * 100 in range(0, 100, 10):
    print i / 100.0

РЕДАКТИРОВАНИЕ: Я честно не могу помнить, почему я думал, что это будет работать синтаксически

for i in range(0, 11, 1):
    print i / 10.0

, Который должен иметь желаемый вывод.

9
задан Navaneeth K N 28 August 2009 в 06:42
поделиться

5 ответов

Он использовался для компиляции в компиляторе VC6, поэтому я предполагаю, что для поддержания обратной совместимости VS2008 поддерживает это не -стандартное расширение. Попробуйте установить флаг / Za (отключить расширение языка), тогда вы должны получить сообщение об ошибке.

8
ответ дан 4 December 2019 в 13:03
поделиться

Это злое расширение VC ++. Если вы компилируете с / W4, компилятор предупредит вас. Полагаю, вы читаете Ссылки на Rvalue: Возможности C ++ 0x в VC10, часть 2 . В этой статье также упоминалась эта проблема.

4
ответ дан 4 December 2019 в 13:03
поделиться

Он не компилируется, по крайней мере, с g ++ 4:

foo.cpp: In function ‘int main()’:
foo.cpp:16: error: invalid initialization of non-const reference of type ‘std::string&’ from a temporary of type ‘std::string’
foo.cpp:10: error: in passing argument 1 of ‘void mutate(std::string&)’

(Номера строк сброшены на 3 или 4, потому что мне пришлось добавить строки #include и 'using'. )

Итак, ваш компилятор не такой строгий, каким должен быть.

1
ответ дан 4 December 2019 в 13:03
поделиться

Это расширение Microsoft, имитирующее поведение многих других компиляторов Microsoft. Если вы включите предупреждения W4, вы увидите предупреждение.

3
ответ дан 4 December 2019 в 13:03
поделиться

Думаю, это зависит от компилятора. g ++ 4.1.2 дает мне это.

In function 'int main()':
Line 15: error: invalid initialization of non-const reference of type 'std::string&' from a temporary of type 'std::string'
compilation terminated due to -Wfatal-errors.

Может быть, потому что вы ничего не делаете, вызов оптимизирован.

0
ответ дан 4 December 2019 в 13:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: