Я некоторое время отлаживал программу и, в конце концов, обнаружил, что ошибка связана с тем, что ссылка не обновляется, как я думал, это будет.
Вот пример, который показывает проблему, с которой я столкнулся:
#include <iostream>
using namespace std;
struct Test {
Test& set(int& i){ i = 10; return *this; }
Test& print(const int& i){ cout << i << endl; return *this; }
};
int main(void){
int i = 0;
Test t;
t.set(i).print(i + 5);
return 0;
}
Я ожидал, что метод print() будет выводить 15, но вместо этого выводит 5.
EDIT: через 10 дней я понял, что с clang он выводит 15! Это ошибка в GCC?