C++ has been around for more than 15 years. During that long period it has been significantly extended, improved, and standardized. One of the consequences of any standardization process is that old, dangerous, redundant, undesirable features are gradually removed. A good example for deprecated features in C++ is using int type to represent boolean values rather than using the built-in bool type; or using the static keyword to indicate internal linkage of an otherwise global function/object instead nameless namespace.
By deprecating a feature, the standardization committee expresses the wish that the feature would disappear from the language. Removing the feature from the language altogether is impractical since existing code would not be able to compile anymore. In other words, deprecating a feature gives its users the time to remove it from their code. From a user point of view, a deprecated feature is one that should not be used anymore, since future versions of the Standard will flag it as an error. In the interim period, compilers should warn about its use.