Есть ли UB в этой реализации шаблона выражения?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Есть ли UB в этой реализации шаблона выражения?

Сообщение Anonymous »

Практически во всех блогах, с которыми я сталкивался с этими шаблонами демонстрации, я вижу такую шаблон, как это: < /p>

Код: Выделить всё

#include 
#include 

template 
class ExprAdd {
private:
const Left &l;
const Right &r;

public:
ExprAdd(const Left &l_, const Right &r_) : l(l_), r(r_){}
size_t size() const {
return l.size();
}
auto operator[](size_t i) const {
return l[i] + r[i];
}
};

template 
ExprAdd operator+(const Left &l, const Right &r) {
return ExprAdd(l, r);
}

int main() {
std::vector x({1, 2});
std::vector y({3, 4});
auto v = (x+x) + (y+y);

for (size_t i = 0; i < v.size(); ++i) {
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79736735/is-there-ub-in-this-expression-template-implementation[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»