for consistency; it's awkward to see it as a struct while LexerError as a
.class.
The choice is basically a matter of taste, but I personally think it's
better to be defined as a class as its base is defined as a class, and
these exception structs are not just a trivial set of values.
public:
/// \brief Exception thrown when we fail to read from the input
/// stream or file.
- struct ReadError : public Unexpected {
+ class ReadError : public Unexpected {
+ public:
ReadError(const char* file, size_t line, const char* what) :
Unexpected(file, line, what)
{}