It is that "but" that is the elephant in the Arduino room. Arduino is more of a paradigm, the ArduinoIDE plus setup() plus loop() is the obvious development shift as is the automatic function prototyping by the IDE. But, there is more to the paradigm.
The Arduino board cores (specific to uC architecture and physical board layout) provide the low-level core-library hardware drivers.
The paradigm also includes a basic set of Arduino "language" commands and functions.
Further, and the source of some bloat and inefficiency, is the pin-mappings:
the pin-mapping arrays provide hardware pins an alias name:
This thread covers it rather thoroughly.
So taking it all together, a package deal, it is not your corporate C++ development IDE. Underneath, there are standard compilers and linkers, and you can always use extern "C"