-
Notifications
You must be signed in to change notification settings - Fork 405
Description
Compiling a simple program which includes rx-includes.hpp fails with gcc 14.
#include <iostream>
#include "rxcpp/rx-includes.hpp"
int main() {
std::cout << "wow" << std::endl;
return 0;
}The issue appears to be that the assignment operators of and on_next_notificationon_error_notification attempt to modify a private const field here and here, respectively. Apparently this compiles in older versions of gcc because it was simply not attempting to check assignments inside of templates, unless the templates are being used. With this change in gcc 14 however, simple assignments are now checked even inside of templates. This would be my guess as to why this code now fails to compile.
The fix seems to be to simply delete the assignment operator for and on_next_notificationon_error_notification, as the two structs are only ever instantiated as shared_ptr so it is not needed. In any case, compilation will fail with older versions of gcc if a user writes code which causes a variant of the assignment operator template to be generated.
Edit: The project I've been working on uses RxCpp v4.1.1, but apparently the const declaration of the T value field of on_next_notification has been removed on master.