Шаблоны выражений и ранжирование на основе C++11

Насколько я понимаю, шаблоны выражений будут ломаться на основе ранжирования for в C++11, поскольку for (auto x : expr)содержит неявный auto&& __range = expr, и это приведет к оборванным ссылкам

. способ создать классы шаблонов выражений, чтобы они либо правильно вели себя с диапазоном на основе for, либо, по крайней мере, вызывали ошибку компиляции?

По сути, я хотел бы предотвратить возможность что шаблоны выражений будут корректно компилироваться, но завершатся ошибкой во время выполнения из-за висячих ссылок. Я не возражаю против того, чтобы оборачивать шаблоны выражений во что-то, прежде чем использовать их в ранжированном виде, если нет тихих ошибок времени выполнения, если пользователь забывает обернуть шаблоны выражений.

9
задан Clinton 7 March 2012 в 02:26
поделиться