chcę specjalizują następujących funkcji członka:szablon specjalizacji klasy szablonu
class foo {
template<typename T>
T get() const;
};
Do drugiej klasy bar
że zależy na szablonach, jak również.
Na przykład, chciałbym bar
być std::pair
z niektórych parametrów szablonu, coś takiego:
template<>
std::pair<T1,T2> foo::get() const
{
T1 x=...;
T2 y=...;
return std::pair<T1,T2>(x,y);
}
Gdzie T1 i T2 są szablony, jak również. Jak to zrobić? O ile mi wiadomo, powinno być możliwe .
Więc teraz mogę zadzwonić:
some_foo.get<std::pair<int,double> >();
Pełne/odpowiedź ostateczna:
template<typename T> struct traits;
class foo {
template<typename T>
T get() const
{
return traits<T>::get(*this);
}
};
template<typename T>
struct traits {
static T get(foo &f)
{
return f.get<T>();
}
};
template<typename T1,typename T2>
struct traits<std::pair<T1,T2> > {
static std::pair<T1,T2> get(foo &f)
{
T1 x=...;
T2 y=...;
return std::make_pair(x,y);
}
};
Nie jest jasne, co masz na myśli. Czy chcesz specjalizacji, która ma zastosowanie, gdy T1 i T2 są szablonami? Lub kiedy są jakieś konkretne szablony? Lub kiedy są szablonami, a ich parametr jest określonym typem? – jalf
Chodzi mi o to, że chcę specjalizować się w mojej funkcji dla innego określonego typu (np. Std :: pair), które również wymagają pewnych parametrów szablonu. – Artyom
Sprawdź to: http://stackoverflow.com/questions/947943/template-specialisation-where-emplated-type-is-alsoa-a-template –