When using the ADC, the measurement is always relative to the analog reference voltage, which most of the time will be the same as Vdd. On many Nucleo, Discovery, and custom boards this will be a 3.3v LDO regulator. However, 3.3v is the target voltage, not the actual, and various factors could lead to significant voltage drops that lead to multi-% inaccuracy if you assume 3.3v.
Many (all?) STM32 MCUs come with an internal bandgap based reference and a calibration value that gives the value of that bandgap at some fixed reference (see your MCU datasheet for the exact value). For example, on the F303RE the bandgap reference is for 3.3V at 25C, and the calibration value is stored at an address that is stored as VREFINT_CAL_ADDR in the HAL libraries, which mbed uses.
The supply voltage Vdd can be calculated as such: