On 24.10.2011 21:41, Steven Schveighoffer wrote:
So you cannot create a function to be called on both shared and
unshared instances? For mutable/immutable there's const, but there is
no "maybeShared".
No. There isn't a hybrid that works as well as const does. I suspect one
could be created, but it's very infrequent that you want to work with
shared data in the same way you want to work with unshared data. With
immutable vs. immutable, const incurs no penalty.
But for shared vs. unshared, there is a very real penalty for obeying
shared semantics.
Perhaps infrequent, but I just encountered a use-case:
// Shared between all threads (created in module ctor)
shared Context defaultContext = {...}
// But each thread *could* create it's own context
class Context {
Socket create() {...} // so this could be called on both shared and
unshared instances. The resulting socket should always be thread local
}
As I don't have any experience with shared, this might have implications
I don't know about though..