Я написал тестовую программу:
#include <iostream>
#include <type_traits>
using namespace std;
template<class T>
void f(T&& t)
{
cout<<is_const<T>()<<endl;
//++t;
}
int main() {
const int i=0;
f(i);
return 0;
}
Он выводит "0", показывая T
не const! Это странно. Затем я изменил f
:
template<class T>
void f(T&& t)
{
cout<<is_const<T>()<<endl;
++t;
}
Тогда возникает ошибка компилятора, говоря, что мы изменяем только чтение T
.
Так можно ли изменить T
или нет? Есть ли какие-либо ошибочные предположения в моей программе?