Yes, and this exactly the purpose of encapsulation. protected is almost public, because it exposes implementation details, and by doing so, tremenously limits the implementation.
How does allowing expansion of it's implement 'limit' the implemention?
War is peace and all that.
This is the typical Java way of thinking, where classes are the core language element and deeply nested class hierarchies are the standard. Not so in C++ -- here, you have many possibilities of extending functionality, and inheritance is usually not the best option.
Inheritence *is* the best option, that's why it exists! That's why protected exists! This isn't a simple hate on Java style idea - given that platform is about 'pointerless' systems, but the fact C++ is an expansion on C with the idea of classes with intended inheritence. Indeed, the very class SoundStream uses this very assumption to allow people to write their own variants on it!
It's indeed a great example, because it can be perfectly extended without inheritance, see thor::StopWatch.
By rewriting an entirely arbitrary class that makes use of system clock calls... which makes sf::Clock now redundant to me. sf::Clock has all the components to become a pauseable clock, but it requires I have access to it's stored time variable from a sub-class perspective.
The fact it's been implemented by so many people suggests it should have been added ages ago, but rather than fighting SFML's paradigm, it's easier if I just say 'hey, can I just independently modify the clock?'.
You make a common mistake: you violate the Liskov Substitution Principle by assuming that stopwatches are clocks and have every property of their base class. Currently, a class invariant of sf::Clock is to be always running and to count the time since the last reset() call. Depending on the semantics you provide, reset() would need to be virtual, or you have a broken base class. The destructor would also have to be virtual, for people who destroy stopwatches polymorphically. This would add useless overhead that most people never use, but all people have to bear.
The sf::Clock is an example of why allowing access via protected would be a good idea (indeed, because it would require a subclass, IE Stopwatch would inherit from Clock). Because most people require a pause/unpause function, it follows the principle of least surprise that it should be added. But alas, my argument is not adding pause to clock: it's moving clock's variables etc to protected so I can derive a subclass with pause from it.
And this is typical: C++ classes must be explicitly designed as base classes, inheritance can't be an afterthought.
This isn't a refutement to the position given though. If anything, as a library, extensibility should be a prime consideration. Consider string basic under STD which is used for the groundwork of char and wchar classes, or the map/list/deque (which are all template types but extensible in their form).
I can widely agree with Hiura and therocode. If you find a certain component in SFML lacking, you should report this to us, and not just patch your way around it. This way, other users can benefit from improvements as well.
What might be lacking from SFML for me, might not warrant a wide enough use case scenario to justify SFML including it, which simply forces me to either write an entire (duplicate) class from scratch, or rewire the library, and neither are practical considerations.
But I'll humour, here's my list (I suspect you'll agree they won't be ending up in SFML any time soon, hence my request for extensibility so I can add my own changes):
1) Pause/Unpause for clock (I'm not the only one).
2) Clock arithmetic (being able to add or subtract clock time from one clock to another with a return clock class as the end result: specific case stuff. You'll definitely say no to this).
3) Ability to specify request types on HTTP (at the very least, GET types).
4) Base64 decoding support on HTTP (standard format for encoding files, messages).
5) Bulk draw support for Window.
6) The ability to 'append' sounds in sf::Buffer.
7) The ability to 'insert' sounds in sf::Buffer (EG silence).
The ability to overwrite/insert sounds in sf::Buffer.
9) GetChannel/GetSplitChannel functionality (so it's possible to isolate left from right cleanly).
[All of the sf::Buffer case scenarios are prime for subclassing]
I'm sure there are others but those are off the top of my end. It's a real bugbear for me to not be able to subclass pre-existing classes in SFML because it means I essentially have to create an external duplicate that then occasionally interfaces with the arbitrary SFML class I can't subclass, which is messy, bad design and inefficient - but I'm forced to do that because inheritance is a thing not being utilised.
There is a reason why protected exists, it's not 'just' a public, and that's misleading at best. The whole point of protected is to grant subclasses access whilst denying conventional outside usage. The fact virtualisation of functions exists implies C++ is all about the inheritance, especially given it's OO code.