Other Parts Discussed in Thread: MSP430FR5969
Tool/software: TI C/C++ Compiler
Using standard CCS project, project compiles and runs correctly, CCS version: Version: 8.1.0.00011
Target: MSP430FR5969
Compiler build flags:
-vmspx --data_model=large -O3 --opt_for_speed=0 --use_hw_mpy=F5 --define=__MSP430FR5969__ -g --c99 --c++14 --printf_support=full --diag_warning=225 --diag_wrap=off --display_error_number --abi=eabi --silicon_errata=CPU21 --silicon_errata=CPU22 --silicon_errata=CPU40 --verbose
Linker build flags:
-vmspx --data_model=large -O3 --opt_for_speed=0 --use_hw_mpy=F5 --define=__MSP430FR5969__ -g --c99 --c++14 --printf_support=full --diag_warning=225 --diag_wrap=off --display_error_number --abi=eabi --silicon_errata=CPU21 --silicon_errata=CPU22 --silicon_errata=CPU40 -z -m"msp430_battery_controller.map" --heap_size=400 --stack_size=400 --cinit_hold_wdt=on --priority --reread_libs --diag_wrap=off --display_error_number --warn_sections --xml_link_info="msp430_battery_controller_linkInfo.xml" --use_hw_mpy=F5 --rom_model
Symptoms:
- std::integer_sequence<> (C++14) is not listed in Content Assist, <utility> has been included
- Navigating to integer_sequence definition in <utility> shows macro #if _LIBCPP_STD_VER > 11 evaluating to FALSE
_LIBCPP_STD_VER source declaration query brings me to __config (line 1075)
#ifndef _LIBCPP_STD_VER
# if __cplusplus <= 201103L
# define _LIBCPP_STD_VER 11
# elif __cplusplus <= 201402L
Here __cplusplus evaluates as 201103L and therefore defines parsing to follow C++11 definitions only.
The only workaround I have found is manually defining macro __cplusplus as 201402L in Project -> properties -> C/C++ General -> Preprocessor Includes -> GNUC++ -> CDT User Settings
Note: This is NOT an acceptable solution