The following is a member function:

void strength(unsigned int);

With it, an user of the class can change the strength data member. However the parameter range is [1, 20].

What do you suggest as an error reporting mechanism taking into consideration that the argument passed will never come directly from the application user input and failure to comply with the requirement is a coding error?

An assert?
Throwing std:: out_of_range?
Changing return type to bool and return false? (ugh?)

This is in line with a post I will be making shortly in the hopes someone can help me define an error handling mechanism.