-
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/ub-in-simple-expression-template-implementation[/url]
1755282191
Anonymous
Практически во всех блогах, с которыми я сталкивался с этими шаблонами демонстрации, я вижу такую шаблон, как это: < /p>
[code]#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/ub-in-simple-expression-template-implementation[/url]