Предупреждение о неиспользуемой переменной с помощью typeid - PullRequest
0 голосов
/ 29 октября 2018

Я написал небольшую оболочку для 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?

Спасибо за любую помощь:)

// редактировать: Я сделал ошибку, не возвращая полный символ *, потому что я использую только нормальные типы! Спасибо, что сообщили мне о опечатке! Я также добавил определение шаблона. Я забыл скопировать это!

1 Ответ

0 голосов
/ 29 октября 2018

Поскольку вы не используете значение из TypedVariable. Вы просто используете его тип (и вы можете получить его тип, переписав свою инициализацию как:

        char const * const code = typeid(DataType).name();
...