Пример:Создание параметра шаблона друга?
template<class T>
class Base {
public:
Base();
friend class T;
};
Сейчас это не работает ... Есть ли способ сделать это?
Я на самом деле пытается сделать общий класс герметиком, как это:
class ClassSealer {
private:
friend class Sealed;
ClassSealer() {}
};
class Sealed : private virtual ClassSealer
{
// ...
};
class FailsToDerive : public Sealed
{
// Cannot be instantiated
};
Я нашел этот пример на этом сайте где-то, но я не могу найти его ... (here)
Я знаю, что есть other ways, но сейчас мне интересно, действительно ли вы можете сделать что-то подобное.
... опять же, C++ 11 допускает ключевое слово «final», например: class X final {...} (или вы можете сделать отдельные виртуальные функции окончательными). В любом случае, я пробовал код выше («friend T;») с g ++ 4.8.4 _without_ the -std = C++ 11, и он компилируется отлично. –