/* set */
template <typename T>
class set
{
public:
iterator begin();
// ...
};
/* set.cpp */
template <typename T>
iterator set<T>::begin()
{
// some implementation
}
/* mysource.cpp */
#include <set>
void f()
{
set<int> l_set;
// ...
}
#include "set.cpp"
template class set<int>;