如果我有一个默认模板类型的模板类,但我必须写模板尖括号.有可能避免这种情况吗?
例:
template <typename T=int>
class tt {
public:
T get() { return 5; }
};
...
tt<> t; // how to avoid <>
std::cout << t.get() << std::endl;
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已通过单独的命名空间完成此操作并重新声明该类:
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;
Run Code Online (Sandbox Code Playgroud)
问题是,如果我想使用其他类型的类,我必须去名称空间detail_.有没有其他解决方案,我还没有看到.