When I try to use SDK in C++ project with GCC 7 I get:
SDK/components/ble/ble_db_discovery/ble_db_discovery.h:92:84: sorry, unimplemented: non-trivial designated initializers not supported
That's because not all fields are initialized:
static ble_db_discovery_t _name = {.discovery_in_progress = 0, \
.discovery_pending = 0, \
.conn_handle = BLE_CONN_HANDLE_INVALID}; \
The fix is very easy for Nordic to implement. Just add missing initializers:
static ble_db_discovery_t _name = {.services = {0}, \
.srv_count = 0, \
.curr_char_ind = 0, \
.curr_srv_ind = 0, \
.discovery_in_progress = 0, \
.discovery_pending = 0, \
.discoveries_count = 0, \
.conn_handle = BLE_CONN_HANDLE_INVALID}; \