Compile-time error for non-instantiated template members instead of link-time error
I have template class ItemContainer that actually is facade for a whole family of containers with different capabilities like sorting, indexing, grouping etc. Implementation details are hidden in cpp. file using pimpl idiom and explicit instantiation. Template is instantiated only with well-known limited set of implementation classes that define the actual behavior of container. Main template implements common functions supported by all containers - IsEmpty() , GetCount() , Clear() etc. Each specific container specializes some functions that are supported only by it, e.g. Sort() for sorted