Why does C++ have functions BP does not have?

Just a simple question:
Why does C++ Code have functions BP does not have?
Why isn’t every C++ function BlueprintCallable/Blueprintable?

BPs also do have functions

94385-bpf.png

you can have as complex as C++ functions in BP.

I don’t know the answer of your second question :)) but I think it has a simple answer like (when you don’t need to use a C++ function in BP so it is not needed to be BPable. probably being BPable uses more resources maybe

This is because blueprint is only meant as a prototyping/simple solution tool, when the logic gets too complicated it’s always better to program the core functionality via C++ and just display some of it towards blueprint for the designers.

C++ has a lot more power and the engine is written in C++ so you can more or less do / use anything. Blueprint is a way for less experienced “programmers” or developers to make games without the hassle of knowing the in’s and out’s of programming which can take years to learn properly. As with anything; With power comes responsibility and blueprint is a solution so that users don’t have to worry about the little things and can avoid the difficulties that come with actual programming. This means that a lot of functionality doesn’t / wouldn’t work with blueprints and nullifies the point of them.

There are also several other factors some functions cannot be supported such as: Blueprints have very poor performance compared to C++, blueprints are simple and do not support a lot of things that C++ can do in terms of features, syntax, design patterns, methodologies etc…

You can have the best of Blueprint and almost the best of C++ by creating your own Blueprint nodes in C++, compile your project, and then use those nodes in your Blueprint event graphs. This will make those hidden functionalities available in Blueprint, but be aware that if they are functions that require a lot of computation or network communication, you will take a greater performance hit by doing it via blueprint than by doing it via straight C++

BP Nativization has greatly reduced the performance gap between C++ and BP, so for some things you can have the best of both worlds, but not in everything.