What is the difference between "comprehensive" and "complete"?

Solution 1:

The two adjectives are different in meanings. Comprehensive means:

Including or dealing with all or nearly all elements or aspects of something: a comprehensive list of sources

It leaves a room for something missing, not much though. For example, when you talk about insurance, you use comprehensive to mean it can cover almost all you need, but not completely 100%.

On the other hand, complete means it has necessary or appropriate parts 100% without anything missing. If you have a complete set of dishes, there should not be one dish missing in the set.

They might sound synonymous, but they aren't.

[Oxford Online Dictionary]

Solution 2:

Specifically in the context you have mentioned, comprehensive and complete stand for different qualities of the C++ framework.

Comprehensive connotes the quality of covering all possible uses/conditions/inputs that the framework might be used for.

The quality of being complete however, seems to be connoting something slightly different. While the framework might cover all possible potential uses, it might not be written to it's logical end from all possible angles. E.g the code might be covering certain areas, but the lines might only be partially written so as to perform some functions but not all possible ones.

In general, including for the 'list' example you have given, the usage of comprehensive vs. complete seems to be about breadth versus depth, from what I surmise. A comprehensive list of animals might be one that covers a little bit of all existing classes i.e mammals, reptiles, birds etc. On the other hand, a complete list of animals would have the name of each and every individual creature in existence classified as an 'animal' within it.

Hope this answer was helpful in some way.