我有一个模板类,可以(有时必须)采用const
类型,但是有一种方法会返回具有相同类型的类的新实例,但应该明确非const。例如,下面的代码编译失败在模板中获取非const类型
template<class T> class SomeClass {
public:
T val;
SomeClass(T val) : val(val) {}
SomeClass<T> other() {
return SomeClass<T>(val);
}
};
int main() {
SomeClass<const int> x(5);
SomeClass<int> y = x.other();
return 0;
}
,因为即使有构造期间VAL副本,它复制到同一类型 - const int
。就像你可以在模板中区分T
和const T
一样,有没有办法区分T
和“nonconst T
”?
我从来没有听说过你可以在模板参数中使用'const'修饰符。 – 2012-02-29 18:41:36