Как написать тело деструктора вне линии для класса шаблона с аргументом std :: enable_if?определение строки для деструктора в классе enabled-if?
(Мне нужно это, чтобы написать декоратор, добавив идентификатор к другим типам объектов).
Код: определение
template<typename T,
typename std::enable_if<std::is_base_of<X,T>::value>::type* = nullptr>
class IdentifiedInstance: public T
{
public:
virtual ~IdentifiedInstance() = 0; // abstract base, still needs a function body
};
тела:
template<typename T,
typename std::enable_if<std::is_base_of<X,T>::value>::type* = nullptr>
IdentifiedInstance::~IdentifiedInstance()
{
}
Это не компилируется, потому что IdentifiedInstance::
должен быть IdentifiedInstance<T, ???>::
.
Какое значение второе значение здесь? Как правильно это записать?
Примечание (1):
Visual Studio 2015 принимает эту форму:
template<typename T,
typename std::enable_if<std::is_base_of<X,T>::value>::type* = nullptr>
class IdentifiedInstance: public T
{
public:
~IdentifiedInstance() = 0
{
}
};
К сожалению, код, который я пишу потребность также будет построен под Linux (и НКА по праву дросселей в этой форме).
Примечания (2): Я попытался найти это в Интернете, но большинство ответов, которые я нашел, касалось того, как частично специализировать деструктор.