Предположим, я хочу знать, является ли тип объектом Eigen
, в отличие от примитива или какого-либо другого класса. Как достичь этого без фактического литья объекта?Как определить, является ли объект типом Eigen?
template <typename Derived>
EigenBase<Derived> fun(const EigenBase<Derived>& value)
{
// This is bad, because value is now of type EigenBase<Derived> and I don't know
// what the original type is.
return value;
}
template <typename T>
T fun(const T& value)
{
// This will also catch primitives and other classes.
return value;
}
Как я могу поймать только типов, которые могут быть типом, выведенными в Eigen::EigenBase<T>
, фактически бросая их к этому типу?
Вы можете использовать ['std :: is_base_of'] (http://en.cppreference.com/w/cpp/types/is_base_of). – juanchopanza
@juanchopanza Прохладный Я не знал об этом, но какой тип я использую? Я не знаю, что такое 'Derived' в этом экземпляре ... – arman
Собственно,« Как я могу уловить только типы, которые могут быть выведены по типу Eigen :: EigenBase, не наведя их на этот тип? » Это то, что вы делаете в своем первом примере. Я думаю, вам нужно переформулировать вашу проблему, потому что сейчас похоже, что вам нужно выяснить, как вернуть значение производного класса с ссылкой на его базу. –
juanchopanza