Обнаружение компиляции CRTP с помощью композиции шаблонаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Обнаружение компиляции CRTP с помощью композиции шаблона

Сообщение Anonymous »

Я застрял с проблемами шаблонов в течение нескольких дней, и вы решили каждую из моих проблем по одному, так что заранее спасибо. < /p>
У меня есть шаблон () кто заботится о композиции UML и еще одном шаблоне (), который является UML, составленным

, поэтому моя цель состоит в том, чтобы не компилировать, если составной объект не является полученным tl2 , а если Typename d не является полученным TL1
. Следующий пост. class = "lang-c ++ prettyprint-override">

Код: Выделить всё

#include 
#include 
#include 

template 
class tl2 ;

template 
class tl1 {
private:
static_assert(std::is_base_of::value, "T should     inherit from tl2");
std::list mTs ;
tl1() {} ;
friend D ;
public:
T & getTbyName() const ;
};

template 
class tl2 {
//static_assert(std::is_base_of::value, "D should inherit from Database");
public:
std::string getName() { return mName ; }
private:
C & mC ;
std::string mName ;
};

class cl1 ;

class cl2 : public tl2  {

};
class cl1 : public tl1  {

};
Моя проблема в том, что это очень хорошо компилируется, и я бы не хотел. Так почему?

Код: Выделить всё

class cl1 : public tl1  {
cl1() {}
};
Я понимаю, почему он не компилируется после изменения, но я не понимаю, почему он собирался ранее. Я не буду контролировать производство, поэтому я хотел бы быть уверенным, что реализация является полученным tlx .
Спасибо за время снова.

Подробнее здесь: https://stackoverflow.com/questions/356 ... omposition
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»