ArduinoMenu
ArduinoMenu copied to clipboard
"dynamic initialization" linking error when combining Menu::style and using rotaryEventIn.h
A linkage error occurs when using rotaryEnventIn.h
in combination with combined Menu::style
:
In this example, the combination
#include <menuIO/rotaryEventIn.h>
...
MENU(saveConfigSubMenu, "Save config", Menu::doNothing, Menu::noEvent, Menu::noStyle | Menu::showTitle,
OP("OK", saveConfig, enterEvent),
EXIT("<Cancel")
);
This is likely caused by this lines (amongst other) inside rotaryEventIn.h
:
template<class T> inline T operator| (T a, T b) { return (T)((int)a | (int)b); }
As generic programming in this case tend to apply to all enums or classes using an overloaded operator. One can also question if an enumeration is the right object for a bit set?
Anyways, compiler and linker seem happy when generic overloaded operations are declared as constexpr
.
PR to follow.