Используют ли компиляторы неопределенную последовательность аргументов функции? ⇐ C++
-
Гость
Используют ли компиляторы неопределенную последовательность аргументов функции?
Хорошо, я знаю, что стандарт требует, чтобы реализация C++ могла выбирать, в каком порядке вычисляются аргументы функции, но существуют ли какие-либо реализации, которые на самом деле «воспользуются» этим в сценарии, где это действительно повлияет на программа?
Классический пример:
int i = 0; Фу(я++, я++); Примечание: я не ищу кого-то, кто скажет мне, что на порядок оценки нельзя полагаться, я это прекрасно осознаю. Меня интересует только то, действительно ли какие-либо компиляторы выполняют вычисления в порядке слева направо, потому что я предполагаю, что если бы они сделали много плохо написанного кода, это сломалось бы (и это правильно, но они все равно, вероятно, будут жаловаться).< /п>
Хорошо, я знаю, что стандарт требует, чтобы реализация C++ могла выбирать, в каком порядке вычисляются аргументы функции, но существуют ли какие-либо реализации, которые на самом деле «воспользуются» этим в сценарии, где это действительно повлияет на программа?
Классический пример:
int i = 0; Фу(я++, я++); Примечание: я не ищу кого-то, кто скажет мне, что на порядок оценки нельзя полагаться, я это прекрасно осознаю. Меня интересует только то, действительно ли какие-либо компиляторы выполняют вычисления в порядке слева направо, потому что я предполагаю, что если бы они сделали много плохо написанного кода, это сломалось бы (и это правильно, но они все равно, вероятно, будут жаловаться).< /п>
Мобильная версия