Я написал небольшую оболочку для typeinfo
, чтобы легче получить тип-тип переменной во время компиляции:
template<typename DataType>
class TypeInfo
{
public:
static const char* typecode()
{
DataType TypedVariable = 0;
const char* code = typeid(TypedVariable).name();
return(code);
};
};
Я использую это так:
const char* code = TypeInfo<float>::typecode();
Он прекрасно компилируется и работает как положено, но я получаю предупреждение
src/common.hh(153): warning: variable "TypedVariable" was set but never used
detected during:
instantiation of "char TypeInfo<DataType>::typecode() [with DataType=r32]"
...
Мне интересно, почему "вызов" typeid()
для переменной не считается ее использованием. Я знаю, что это определенное ключевое слово, но все же я раздражен тем, что получение типа переменной не считается его использованием.
Компиляция выполняется с использованием nvcc
CUDA 9.2. Может быть, это особенность CUDA?
Спасибо за любую помощь:)
// редактировать:
Я сделал ошибку, не возвращая полный символ *, потому что я использую только нормальные типы! Спасибо, что сообщили мне о опечатке! Я также добавил определение шаблона. Я забыл скопировать это!