luni64 / EncoderTool

The EncoderTool is a library to manage and read out rotary encoders connected either directly or via multiplexers to ARM based boards. Encoder push buttons are supported. Callback functions can be attached to encoder changes and button presses to allow for event driven applications
MIT License
48 stars 12 forks source link

EncoderTool compilation errors under 0.58.3 in Arduino IDE 2.0.3 #30

Closed bdlabitt closed 1 year ago

bdlabitt commented 1 year ago

TTT V1.2.0 generating errors under Arduino IDE 2.0.3. Also EncoderTool V3.1.0 are generating similar errors. Here is the compiler output. Teensy4.1 using PJRC 1.58.3 beta. `In file included from /home/bruce/Arduino/libraries/TeensyTimerTool/src/types.h:9, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/ITimerChannel.h:3, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/baseTimer.h:5, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/oneShotTimer.h:4, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/TeensyTimerTool.h:3, from /home/bruce/Arduino/ELS_IDE2/ELS.h:15, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/TeensyTimerTool/src/inplace_function.h:10:13: error: redefinition of 'void panic()' 10 | inline void panic() // could be weak to be overriden by a user error handler? | ^~~~~ In file included from /home/bruce/Arduino/libraries/EncoderTool/src/config.h:26, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderBase.h:6, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlexBase.h:3, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlex74165.h:7, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderTool.h:8, from /home/bruce/Arduino/ELS_IDE2/ELS.h:14, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/EncoderTool/src/inplace_function.h:10:13: note: 'void panic()' previously defined here 10 | inline void panic() // could be weak to be overriden by a user error handler? | ^~~~~ In file included from /home/bruce/Arduino/libraries/TeensyTimerTool/src/types.h:9, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/ITimerChannel.h:3, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/baseTimer.h:5, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/oneShotTimer.h:4, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/TeensyTimerTool.h:3, from /home/bruce/Arduino/ELS_IDE2/ELS.h:15, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/TeensyTimerTool/src/inplace_function.h:100:33: error: redefinition of 'constexpr const size_t stdext::inplace_function_detail::InplaceFunctionDefaultCapacity' 100 | static constexpr size_t InplaceFunctionDefaultCapacity = 32; | ^~~~~~~~~~ In file included from /home/bruce/Arduino/libraries/EncoderTool/src/config.h:26, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderBase.h:6, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlexBase.h:3, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlex74165.h:7, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderTool.h:8, from /home/bruce/Arduino/ELS_IDE2/ELS.h:14, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/EncoderTool/src/inplace_function.h:100:33: note: 'constexpr const size_t stdext::inplace_function_detail::InplaceFunctionDefaultCapacity' previously defined here 100 | static constexpr size_t InplaceFunctionDefaultCapacity = 32; | ^~~~~~~~~~ In file included from /home/bruce/Arduino/libraries/TeensyTimerTool/src/types.h:9, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/ITimerChannel.h:3, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/baseTimer.h:5, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/oneShotTimer.h:4, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/TeensyTimerTool.h:3, from /home/bruce/Arduino/ELS_IDE2/ELS.h:15, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/TeensyTimerTool/src/inplace_function.h:107:15: error: redefinition of 'union stdext::inplace_function_detail::aligned_storage_helper' 107 | union aligned_storage_helper | ^~~~~~ In file included from /home/bruce/Arduino/libraries/EncoderTool/src/config.h:26, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderBase.h:6, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlexBase.h:3, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlex74165.h:7, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderTool.h:8, from /home/bruce/Arduino/ELS_IDE2/ELS.h:14, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/EncoderTool/src/inplace_function.h:107:15: note: previous definition of 'union stdext::inplace_function_detail::aligned_storage_helper' 107 | union aligned_storage_helper | ^~~~~~ In file included from /home/bruce/Arduino/libraries/TeensyTimerTool/src/types.h:9, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/ITimerChannel.h:3, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/baseTimer.h:5, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/oneShotTimer.h:4, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/TeensyTimerTool.h:3, from /home/bruce/Arduino/ELS_IDE2/ELS.h:15, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/TeensyTimerTool/src/inplace_function.h:131:16: error: redefinition of default argument for 'unsigned int Align' 131 | struct aligned_storage | ^~~~~~~ In file included from /home/bruce/Arduino/libraries/EncoderTool/src/config.h:26, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderBase.h:6, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlexBase.h:3, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlex74165.h:7, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderTool.h:8, from /home/bruce/Arduino/ELS_IDE2/ELS.h:14, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/EncoderTool/src/inplace_function.h:130:81: note: original definition appeared here 130 | template <size_t Cap, size_t Align = alignof(aligned_storage_helper)> | ^ In file included from /home/bruce/Arduino/libraries/TeensyTimerTool/src/types.h:9, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/ITimerChannel.h:3, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/baseTimer.h:5, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/oneShotTimer.h:4, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/TeensyTimerTool.h:3, from /home/bruce/Arduino/ELS_IDE2/ELS.h:15, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/TeensyTimerTool/src/inplace_function.h:149:16: error: redefinition of 'struct stdext::inplace_function_detail::wrapper' 149 | struct wrapper | ^~~ In file included from /home/bruce/Arduino/libraries/EncoderTool/src/config.h:26, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderBase.h:6, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlexBase.h:3, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlex74165.h:7, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderTool.h:8, from /home/bruce/Arduino/ELS_IDE2/ELS.h:14, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/EncoderTool/src/inplace_function.h:149:16: note: previous definition of 'struct stdext::inplace_function_detail::wrapper' 149 | struct wrapper | ^~~ In file included from /home/bruce/Arduino/libraries/TeensyTimerTool/src/types.h:9, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/ITimerChannel.h:3, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/baseTimer.h:5, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/oneShotTimer.h:4, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/TeensyTimerTool.h:3, from /home/bruce/Arduino/ELS_IDE2/ELS.h:15, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/TeensyTimerTool/src/inplace_function.h:155:16: error: redefinition of 'struct stdext::inplace_function_detail::vtable<R, Args>' 155 | struct vtable | ^~ In file included from /home/bruce/Arduino/libraries/EncoderTool/src/config.h:26, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderBase.h:6, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlexBase.h:3, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlex74165.h:7, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderTool.h:8, from /home/bruce/Arduino/ELS_IDE2/ELS.h:14, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/EncoderTool/src/inplace_function.h:155:16: note: previous definition of 'struct stdext::inplace_function_detail::vtable<R, Args>' 155 | struct vtable | ^~ In file included from /home/bruce/Arduino/libraries/TeensyTimerTool/src/types.h:9, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/ITimerChannel.h:3, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/baseTimer.h:5, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/oneShotTimer.h:4, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/TeensyTimerTool.h:3, from /home/bruce/Arduino/ELS_IDE2/ELS.h:15, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/TeensyTimerTool/src/inplace_function.h:202:9: error: redefinition of 'template<class R, class ... Args> stdext::inplace_function_detail::vtable<R, Args ...> stdext::inplace_function_detail::empty_vtable' 202 | empty_vtable{}; | ^~~~ In file included from /home/bruce/Arduino/libraries/EncoderTool/src/config.h:26, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderBase.h:6, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlexBase.h:3, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlex74165.h:7, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderTool.h:8, from /home/bruce/Arduino/ELS_IDE2/ELS.h:14, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/EncoderTool/src/inplace_function.h:202:9: note: 'template<class R, class ... Args> stdext::inplace_function_detail::vtable<R, Args ...> stdext::inplace_function_detail::empty_vtable<R, Args ...>' previously declared here 202 | empty_vtable{}; | ^~~~ In file included from /home/bruce/Arduino/libraries/TeensyTimerTool/src/types.h:9, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/ITimerChannel.h:3, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/baseTimer.h:5, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/oneShotTimer.h:4, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/TeensyTimerTool.h:3, from /home/bruce/Arduino/ELS_IDE2/ELS.h:15, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/TeensyTimerTool/src/inplace_function.h:205:8: error: redefinition of 'struct stdext::inplace_function_detail::is_valid_inplace_dst<DstCap, DstAlign, SrcCap, SrcAlign>' 205 | struct is_valid_inplace_dst : std::true_type | ^~~~~~~~ In file included from /home/bruce/Arduino/libraries/EncoderTool/src/config.h:26, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderBase.h:6, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlexBase.h:3, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlex74165.h:7, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderTool.h:8, from /home/bruce/Arduino/ELS_IDE2/ELS.h:14, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/EncoderTool/src/inplace_function.h:205:8: note: previous definition of 'struct stdext::inplace_function_detail::is_valid_inplace_dst<DstCap, DstAlign, SrcCap, SrcAlign>' 205 | struct is_valid_inplace_dst : std::true_type | ^~~~~~~~ In file included from /home/bruce/Arduino/libraries/TeensyTimerTool/src/types.h:9, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/ITimerChannel.h:3, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/baseTimer.h:5, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/oneShotTimer.h:4, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/TeensyTimerTool.h:3, from /home/bruce/Arduino/ELS_IDE2/ELS.h:15, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/TeensyTimerTool/src/inplace_function.h:220:8: error: redefinition of 'struct stdext::inplace_function_detail::is_invocable_r_impl< , R, F, Args>' 220 | struct is_invocable_r_impl : std::false_type | ^~~~~~~ In file included from /home/bruce/Arduino/libraries/EncoderTool/src/config.h:26, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderBase.h:6, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlexBase.h:3, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlex74165.h:7, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderTool.h:8, from /home/bruce/Arduino/ELS_IDE2/ELS.h:14, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/EncoderTool/src/inplace_function.h:220:8: note: previous definition of 'struct stdext::inplace_function_detail::is_invocable_r_impl< , R, F, Args>' 220 | struct is_invocable_r_impl : std::false_type | ^~~~~~~ In file included from /home/bruce/Arduino/libraries/TeensyTimerTool/src/types.h:9, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/ITimerChannel.h:3, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/baseTimer.h:5, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/oneShotTimer.h:4, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/TeensyTimerTool.h:3, from /home/bruce/Arduino/ELS_IDE2/ELS.h:15, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/TeensyTimerTool/src/inplace_function.h:225:8: error: redefinition of 'struct stdext::inplace_function_detail::is_invocable_r_impl<decltype ((declval()((declval)()...), void())), void, F, Args ...>' 225 | struct is_invocable_r_impl< | ^~~~~~~~ 226 | decltype(std::declval()(std::declval()...), void()), | ~~~~~~~~~~~~~ 227 | void, | ~ 228 | F, | ~~
229 | Args...> : std::true_type | ~~~~ In file included from /home/bruce/Arduino/libraries/EncoderTool/src/config.h:26, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderBase.h:6, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlexBase.h:3, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlex74165.h:7, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderTool.h:8, from /home/bruce/Arduino/ELS_IDE2/ELS.h:14, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/EncoderTool/src/inplace_function.h:225:8: note: previous definition of 'struct stdext::inplace_function_detail::is_invocable_r_impl<decltype ((declval()((declval)()...), void())), void, F, Args ...>' 225 | struct is_invocable_r_impl< | ^~~~~~~~ 226 | decltype(std::declval()(std::declval()...), void()), | ~~~~~~~~~~~~~ 227 | void, | ~ 228 | F, | ~~
229 | Args...> : std::true_type | ~~~~ In file included from /home/bruce/Arduino/libraries/TeensyTimerTool/src/types.h:9, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/ITimerChannel.h:3, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/baseTimer.h:5, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/oneShotTimer.h:4, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/TeensyTimerTool.h:3, from /home/bruce/Arduino/ELS_IDE2/ELS.h:15, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/TeensyTimerTool/src/inplace_function.h:234:8: error: redefinition of 'struct stdext::inplace_function_detail::is_invocable_r_impl<decltype ((declval()((declval)()...), void())), const void, F, Args ...>' 234 | struct is_invocable_r_impl< | ^~~~~~~~ 235 | decltype(std::declval()(std::declval()...), void()), | ~~~~~~~~~~~~~ 236 | const void, | ~~~ 237 | F, | ~~
238 | Args...> : std::true_type | ~~~~ In file included from /home/bruce/Arduino/libraries/EncoderTool/src/config.h:26, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderBase.h:6, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlexBase.h:3, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlex74165.h:7, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderTool.h:8, from /home/bruce/Arduino/ELS_IDE2/ELS.h:14, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/EncoderTool/src/inplace_function.h:234:8: note: previous definition of 'struct stdext::inplace_function_detail::is_invocable_r_impl<decltype ((declval()((declval)()...), void())), const void, F, Args ...>' 234 | struct is_invocable_r_impl< | ^~~~~~~~ 235 | decltype(std::declval()(std::declval()...), void()), | ~~~~~~~~~~~~~ 236 | const void, | ~~~ 237 | F, | ~~
238 | Args...> : std::true_type | ~~~~ In file included from /home/bruce/Arduino/libraries/TeensyTimerTool/src/types.h:9, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/ITimerChannel.h:3, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/baseTimer.h:5, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/oneShotTimer.h:4, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/TeensyTimerTool.h:3, from /home/bruce/Arduino/ELS_IDE2/ELS.h:15, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/TeensyTimerTool/src/inplace_function.h:243:8: error: redefinition of 'struct stdext::inplace_function_detail::is_invocable_r_impl<decltype (accept(declval()((declval)()...))), R, F, Args ...>' 243 | struct is_invocable_r_impl< | ^~~~~~~~ 244 | decltype(accept(std::declval()(std::declval()...))), | ~~~~~~~~~~~~~~~~ 245 | R, | ~~
246 | F, | ~~
247 | Args...> : std::true_type | ~~~~ In file included from /home/bruce/Arduino/libraries/EncoderTool/src/config.h:26, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderBase.h:6, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlexBase.h:3, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlex74165.h:7, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderTool.h:8, from /home/bruce/Arduino/ELS_IDE2/ELS.h:14, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/EncoderTool/src/inplace_function.h:243:8: note: previous definition of 'struct stdext::inplace_function_detail::is_invocable_r_impl<decltype (accept(declval()((declval)()...))), R, F, Args ...>' 243 | struct is_invocable_r_impl< | ^~~~~~~~ 244 | decltype(accept(std::declval()(std::declval()...))), | ~~~~~~~~~~~~~~~~ 245 | R, | ~~
246 | F, | ~~
247 | Args...> : std::true_type | ~~~~ In file included from /home/bruce/Arduino/libraries/TeensyTimerTool/src/types.h:9, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/ITimerChannel.h:3, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/baseTimer.h:5, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/oneShotTimer.h:4, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/TeensyTimerTool.h:3, from /home/bruce/Arduino/ELS_IDE2/ELS.h:15, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/TeensyTimerTool/src/inplace_function.h:263:7: error: redefinition of default argument for 'unsigned int Capacity' 263 | class inplace_function; // unspecified | ^~~~ In file included from /home/bruce/Arduino/libraries/EncoderTool/src/config.h:26, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderBase.h:6, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlexBase.h:3, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlex74165.h:7, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderTool.h:8, from /home/bruce/Arduino/ELS_IDE2/ELS.h:14, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/EncoderTool/src/inplace_function.h:261:49: note: original definition appeared here 261 | size_t Capacity = inplace_function_detail::InplaceFunctionDefaultCapacity, | ^~~~~~~~~~ In file included from /home/bruce/Arduino/libraries/TeensyTimerTool/src/types.h:9, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/ITimerChannel.h:3, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/baseTimer.h:5, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/oneShotTimer.h:4, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/TeensyTimerTool.h:3, from /home/bruce/Arduino/ELS_IDE2/ELS.h:15, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/TeensyTimerTool/src/inplace_function.h:268:12: error: redefinition of 'struct stdext::inplace_function_detail::is_inplace_function< >' 268 | struct is_inplace_function : std::false_type | ^~~~~~~ In file included from /home/bruce/Arduino/libraries/EncoderTool/src/config.h:26, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderBase.h:6, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlexBase.h:3, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlex74165.h:7, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderTool.h:8, from /home/bruce/Arduino/ELS_IDE2/ELS.h:14, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/EncoderTool/src/inplace_function.h:268:12: note: previous definition of 'struct stdext::inplace_function_detail::is_inplace_function< >' 268 | struct is_inplace_function : std::false_type | ^~~~~~~ In file included from /home/bruce/Arduino/libraries/TeensyTimerTool/src/types.h:9, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/ITimerChannel.h:3, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/baseTimer.h:5, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/oneShotTimer.h:4, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/TeensyTimerTool.h:3, from /home/bruce/Arduino/ELS_IDE2/ELS.h:15, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/TeensyTimerTool/src/inplace_function.h:272:12: error: redefinition of 'struct stdext::inplace_function_detail::is_inplace_function<stdext::inplace_function<Sig, Cap, Align> >' 272 | struct is_inplace_function<inplace_function<Sig, Cap, Align>> : std::true_type | ^~~~~~~~~~~~~~ In file included from /home/bruce/Arduino/libraries/EncoderTool/src/config.h:26, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderBase.h:6, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlexBase.h:3, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlex74165.h:7, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderTool.h:8, from /home/bruce/Arduino/ELS_IDE2/ELS.h:14, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/EncoderTool/src/inplace_function.h:272:12: note: previous definition of 'struct stdext::inplace_function_detail::is_inplace_function<stdext::inplace_function<Sig, Cap, Align> >' 272 | struct is_inplace_function<inplace_function<Sig, Cap, Align>> : std::true_type | ^~~~~~~~~~~~~~ In file included from /home/bruce/Arduino/libraries/TeensyTimerTool/src/types.h:9, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/ITimerChannel.h:3, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/baseTimer.h:5, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/API/oneShotTimer.h:4, from /home/bruce/Arduino/libraries/TeensyTimerTool/src/TeensyTimerTool.h:3, from /home/bruce/Arduino/ELS_IDE2/ELS.h:15, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/TeensyTimerTool/src/inplace_function.h:282:7: error: redefinition of 'class stdext::inplace_function<R(Args ...), Capacity, Alignment>' 282 | class inplace_function<R(Args...), Capacity, Alignment> | ^~~~~~~~~~~~~ In file included from /home/bruce/Arduino/libraries/EncoderTool/src/config.h:26, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderBase.h:6, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlexBase.h:3, from /home/bruce/Arduino/libraries/EncoderTool/src/Multiplexed/EncPlex74165.h:7, from /home/bruce/Arduino/libraries/EncoderTool/src/EncoderTool.h:8, from /home/bruce/Arduino/ELS_IDE2/ELS.h:14, from /home/bruce/Arduino/ELS_IDE2/ELS_IDE2.ino:1: /home/bruce/Arduino/libraries/EncoderTool/src/inplace_function.h:282:7: note: previous definition of 'class stdext::inplace_function<R(Args ...), Capacity, Alignment>' 282 | class inplace_function<R(Args...), Capacity, Alignment> | ^~~~~~~~~~~~~

exit status 1

Compilation error: exit status 1`

I do have a customer that I need to support. I am setting up a github project and wish for the customer to use IDE2, but the project won't compile now. It was 100% functional under IDE1.8.19 and the countertype branch.

luni64 commented 1 year ago

https://forum.pjrc.com/threads/70264-EncoderTool?p=319670&viewfull=1#post319670