Если у меня есть класс шаблона с типом шаблона по умолчанию, я должен написать угловые скобки шаблона. Можно ли как-то этого избежать?
Пример:
template <typename T=int>
class tt {
public:
T get() { return 5; }
};
...
tt<> t; // how to avoid <>
std::cout << t.get() << std::endl;
До сих пор я делал это с помощью отдельного пространства имен и переобъявления класса:
namespace detail_ {
template <typename T=int>
class tt {
public:
T get() { return 5; }
};
}
class tt : public detail_::tt {}
...
tt t;
std::cout << t.get() << std::endl;
Проблема в том, что если я хочу использовать класс с другим типом, мне нужно пройти через пространство имен detail_. Есть ли другое решение, которого я еще не видел.
<>
? Наличие допустимых типовtt
иtt<Foo>
невозможно на самом деле. - person Arne Mertz   schedule 15.04.2013