1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
struct SpecA;
struct SpecB;
struct SpecC;
template <typename TAlphabet, typename TSpec>
class String{};
template <typename TAlphabet, typename TSpec>
void myFunction(String<TAlphabet, TSpec> const &){} // Variant (A)
template <typename TAlphabet>
void myFunction(String<TAlphabet, SpecB> const &){} // Variant (B)
// ...
int main()
{
String<char, SpecA> a;
String<char, SpecB> b;
String<char, SpecC> c;
myFunction(a); // calls (A)
myFunction(b); // calls (B)
myFunction(c); // calls (A)
}
|