Следующий код C ++ использует typeid
для вывода класса времени выполнения параметра:
#include <iostream>
class Foo
{
};
class Bar: public Foo
{
};
template <class O> void printTypeName(O& object)
{
std::cout << typeid(object).name();
}
int main(void)
{
Bar x;
printTypeName(x);
}
Поскольку Foo
не является полиморфным, VS C ++ не использует объект для определения информации о типеи выдает
C4100 предупреждение («формальный параметр без ссылки»).
Есть ли способ избавиться от предупреждения, сохраняя при этом возможность распечатать объекттипа с простым вызовом метода?Я бы предпочел не отключать предупреждение.