我有一個模板類,可以(有時必須)採用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