F>template <template <class> class T>
F>struct Bar {};
F>template <typename T>
F>struct Foo : public Bar<Foo> // OK
F>{
F> Foo() : Bar<::Foo> () {} // no Oops
F>};
F>
F>Собственно вопрос: как побороть, не нарушив идею?
F>PS. Подсказка: у ответа есть маленькая legacy-особенность
Отдыхать надо, а не загадки решать в первомайские
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Conr, Вы писали:
F>>Собственно вопрос: как побороть, не нарушив идею? C>А зачем вообще выделенное?
C>Отлично работает вот так: C>
C>template <typename T>
C>struct Foo : public Bar<Foo>
C>{
C> Foo() : Bar ()
C> {
C> }
C>};
C>
Чуть-чуть усложним
template <template <class, class> class T, class U>
struct Bar {};
template <class T, class U>
struct Foo : public Bar<Foo, U>
{
Foo() : Bar() {} // таки Oops, нужен список параметров
};
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Здравствуйте, frogkiller, Вы писали:
V>>Отдыхать надо, а не загадки решать в первомайские F>Ты знал
Не знал, но догадался F>А на грабли с <: ты всё-таки наступил, хоть я и предупреждал
Я не проверял на легаси компиляторах
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[3]: первомайская загадка
От:
Аноним
Дата:
03.05.08 20:10
Оценка:
Здравствуйте, frogkiller, Вы писали:
F>Чуть-чуть усложним F>
F>template <template <class, class> class T, class U>
F>struct Bar {};
F>template <class T, class U>
F>struct Foo : public Bar<Foo, U>
F>{
F> Foo() : Bar() {} // таки Oops, нужен список параметров
F>};
F>
Здравствуйте, Аноним, Вы писали:
А>Таки не Oops, VC++ 2008 кушает за милую душу
Да? Какой он прожорливый, однако. А скорми ему вот такое:
template <template <class, class> class T, class U>
struct Bar {};
template <class T, class U>
struct Foo : public Bar<Foo, U>, public Bar<Foo, T>
{
Foo() : Bar() {} // приятного аппетита
};
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re[5]: первомайская загадка
От:
Аноним
Дата:
04.05.08 08:24
Оценка:
Здравствуйте, frogkiller, Вы писали:
F>Да? Какой он прожорливый, однако. А скорми ему вот такое:
F>template <template <class, class> class T, class U> F>struct Bar {};
F>template <class T, class U> F>struct Foo : public Bar<Foo, U>, public Bar<Foo, T> F>{ F> Foo() : Bar() {} // приятного аппетита F>};
Тогда по мотивам ответа Vain
template <template <class, class> class T, class U>
struct Bar {};
template <class T, class U>
struct Foo : public Bar<Foo, U>, public Bar<Foo, T>
{
typedef Foo _Myt;
F>И также, как Vain, ты попался на <:. Странно, что это скушал VC2008.
2005 не кушает, например, такое
int arr<:10:> = <%%>;
Of course, the code must be complete enough to compile and link.
Re[7]: первомайская загадка
От:
Аноним
Дата:
04.05.08 21:00
Оценка:
Здравствуйте, frogkiller, Вы писали:
F>Здравствуйте, Аноним, Вы писали:
А>>Тогда по мотивам ответа Vain А>>
template <template <class, class> class T, class U>
А>>struct Bar {};
А>>template <class T, class U>
А>>struct Foo : public Bar<Foo, U>, public Bar<Foo, T>
А>>{
А>> typedef Foo _Myt;
А>> Foo() : Bar_<:_:Foo,U>(), Bar_<:_:Foo,T>()
А>> {
А>> } // спасибо, очень вкусно
А>>};
F>И также, как Vain, ты попался на <:. Странно, что это скушал VC2008.
а что есть такой оператор <: ? Что на него как то должен реагировать компилятор?
Re[8]: первомайская загадка
От:
Аноним
Дата:
05.05.08 06:43
Оценка:
Здравствуйте, Аноним, Вы писали: F>>И также, как Vain, ты попался на <:. Странно, что это скушал VC2008.
А>а что есть такой оператор <: ? Что на него как то должен реагировать компилятор?
<: это alternative token для правой квадратной скобки "[".
Re[9]: первомайская загадка
От:
Аноним
Дата:
05.05.08 08:31
Оценка:
Здравствуйте, Аноним, Вы писали:
А>>а что есть такой оператор <: ? Что на него как то должен реагировать компилятор? А><: это alternative token для правой квадратной скобки "[".
Где такое написано?
В VC2008 такого точно нет, вообще думаю в любой версии VC такого правила нет.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Аноним, Вы писали:
А>>>а что есть такой оператор <: ? Что на него как то должен реагировать компилятор? А>><: это alternative token для правой квадратной скобки "[".
А>Где такое написано? А>В VC2008 такого точно нет, вообще думаю в любой версии VC такого правила нет.
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re[11]: первомайская загадка
От:
Аноним
Дата:
05.05.08 11:00
Оценка:
Здравствуйте, frogkiller, Вы писали:
F>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте, Аноним, Вы писали:
А>>>>а что есть такой оператор <: ? Что на него как то должен реагировать компилятор? А>>><: это alternative token для правой квадратной скобки "[".
А>>Где такое написано? А>>В VC2008 такого точно нет, вообще думаю в любой версии VC такого правила нет.
F>Подробно и на русском.
Ну значит можно констатировать, что VC вообще о диграфах не знает