Здравствуйте, T4r4sB, Вы писали:
CEM>>Нет, нельзя. Твоя доработка сильно утяжелит внутреннюю структуру классов, кому это нужно, при условии, что не будет использоваться? Не, ты можешь пообщаться с авторами, предложить идею. Вот к примеру, архитектурное решение с виртуальными таблицами методов в классе существует, их можно включить и выключить. Если получится ровно так же, я не против.
TB>Чего-чего, внутренняя структура, виртуальные таблицы?
TB>Я же написал: рефлексия времени компиляции.
TB>Не, ты точно читаешь очень невнимательно, торопясь вставить очередную коронную фразу.
А, да, каюсь, я не прав про классы, это про время компиляции.
Проблема определения на момент компиляции наличия у класса метода с нужной сигнатурой решается, например, шаблонами.
class CGood
{
protected:
void foo(const int& i){};
};
class CBad
{
protected:
void foo(int& i){};
};
template<class T> class CT: public T
{
public:
CT(const int& i);
};
template<class T> CT<T>::CT(const int& i)
{
foo(i);
}
// once in code:
CT<CGood> cg(1); // OK
CT<CBad> cb(1); // Error