Chuck Messenger wrote: > Vladimir Prus wrote: >> Chuck Messenger wrote: >> >> >>>Vladimir Prus wrote: >>> >>> >>>>Yep. This question was raised already. I think that making templates out >>>>of all classes is *a* solution, but I'm not sure it's *the* solution. >>>>The problem is that extensive template usage would prevent making >>>>library --- either shared or static. I think that would be a big >>>>downside. >>> >>>Why does that matter? The great majority of other Boost libraries are >>>header-file-only. I think of .cpp components of Boost libraries as a >>>sometimes-necessary evil, not as a desired feature. >> >> >> Becase header-file-only libraries have two problems --- they increase >> compilation times and they increase binary size. And you can't share the >> code between different applications. >> >> I think that's important practical aspect. In past, I was burned by >> overgeneralization --- almost all core classes in a program had template >> parameter. It had only one possible value, but I though different ones >> were possible. As the result, compilation time was terrible, and no new >> possible values for the template parameter became needed. >> >> And these days, I'm rather unhappy with compilation times of BGL... >> > > Perhaps you can do both: write the library with templates for a > generalized string. Then, supply "fast.cpp" and "fast.hpp" (choose > better names). Use a pimpl idiom in fast.hpp, so it doesn't need to > include any template code. fast.cpp includes the templates, but needs > to be compiled only once.
That's a possible approach. But there are also at least two other: - using preprocessor to generate two version - using wstring internally with conversion on interface boundaries I think it's better to wait for Unicode users to formulate what's needed. It seems, for example, that the last approach would work better for me on Linux. - Volodya _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost