Re[2]: Задачка от БС.
От: Klestov  
Дата: 13.11.02 10:07
Оценка: -5
Здравствуйте UgN, Вы писали:

Избыточное цитирование удалено модератором. -- ПК

UgN>C++ — это прикол от Страуструпа, который даже и представить не мог, что современные программисты будут пытаться использовать язык, допускающий употребление 10 различных ключевых слов подряд...



Но 10 ключевых слов пока не удалось никому написать
Задачка от БС.
От: Fantasist  
Дата: 13.11.02 06:40
Оценка: 14 (1)
Вот тут случайно наткнулся на задачку от Страуструпа.


Напишите корректную программу на С++, содержашую последовательность по крайней мере из десяти идущих подряд различных ключевых слов, не разделенных индификаторами, операторами, символами пунтктуации и т. д.


Я подумал, но больше чем 8 выставить не смог:

class A
{ 
  friend static inline const unsigned int operator or(const A&,const A&);
 ...
};


Как, скажите, можно записать 10(или даже более)?

Я так пологаю, что макрозамена ключевых слов считается не честной, иначе их можно очень много выставить.
Re[6]: Задачка от БС.
От: dupamid Россия  
Дата: 13.11.02 11:15
Оценка: 10 (1)
Здравствуйте Xentrax, Вы писали:

X>Функция SwitchPrototype не будет компилироваться до тех пор, пока ее не вызовет пользователь. То есть если в используемом нами варианте CreationPolicy нет функций GetPrototype и SetPrototype, то компилятор ни слова не скажет, хотя SwitchPrototype их и вызывает.


Внесу небольшую ясность. Код внутри шаблонов должен быть синтаксически корректным в любом случае, в случае если он настраивается, то еще и семантически корректным. По Стандарту разрешено не выдавать ошибки о синтаксических проблемах в шаблонах до момента настройки, но от этого программа содержащая синтксические ошибки в не настраиваемых шаблонах коррктной не становится.

MS Visual C++, которым здесь большинство пользуется не почти не проверяет синтаксис не настроенных шаблонов функций, поэтому ошибки и не выдаются до момента настройки.
Re[4]: Задачка от БС.
От: Klestov  
Дата: 13.11.02 07:16
Оценка: 5 (1)
Здравствуйте Klestov, Вы писали:

K>Здравствуйте Fantasist, Вы писали:


F>>Здравствуйте Klestov, Вы писали:


F>>

F>>>>
F>>>>

F>>>> Напишите корректную программу на С++, содержашую последовательность по крайней мере из десяти идущих подряд различных ключевых слов, не разделенных индификаторами, операторами, символами пунтктуации и т. д.


K>>>
K>>>do do do do do do do do do while (true) break;  while (true); while (true); while (true); while (true); while (true); while (true); while (true); while (true); while (true);
K>>>


F>>Не, об этом я первым делом подумал, но: "...десяти идущих подряд различных ключевых"


K>10 совершенно различных ? Ну тогда ... подумаем



Комментарий

/*
for do class this struct break switch case friend inline
*/
Re: Не оверквоть!
От: Klestov  
Дата: 13.11.02 08:41
Оценка: 2 (1)
Здравствуйте Kaa, Вы писали:

Kaa>Здравствуйте Klestov:


Kaa>Почитай правила поведения. Иначе нарвешься на встречные меры.



class TClassB {
};

int g ()
{
if (true) {}
else do extern const volatile signed short int operator + (int p,TClassB p2);
while (true);
}


9.
Re[5]: Не оверквоть!
От: Klestov  
Дата: 13.11.02 09:24
Оценка: -1
Здравствуйте UgN, Вы писали:

Избыточное цитирование удалено модератором. -- ПК

UgN>я скорее застрелюсь чем в своей программе ТАКОЕ напишу.


Я тоже.
Re: Задачка от БС.
От: Klestov  
Дата: 13.11.02 06:48
Оценка:
Здравствуйте Fantasist, Вы писали:

F>Вот тут случайно наткнулся на задачку от Страуструпа.


F>

F>

F> Напишите корректную программу на С++, содержашую последовательность по крайней мере из десяти идущих подряд различных ключевых слов, не разделенных индификаторами, операторами, символами пунтктуации и т. д.


F>Я подумал, но больше чем 8 выставить не смог:


F>
F>class A
F>{ 
F>  friend static inline const unsigned int operator or(const A&,const A&);
F> ...
F>};

F>


F>Как, скажите, можно записать 10(или даже более)?


F>Я так пологаю, что макрозамена ключевых слов считается не честной, иначе их можно очень много выставить.



do do do do do do do do do while (true) break;  while (true); while (true); while (true); while (true); while (true); while (true); while (true); while (true); while (true);


Re: Задачка от БС.
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 13.11.02 06:58
Оценка:
Здравствуйте Fantasist, Вы писали:

F>Как, скажите, можно записать 10(или даже более)?


Ну, второе, что пришло в голову:

while ( sizeof unsigned char )
  while( sizeof signed short )
    while( sizeof unsigned long )
      return;


typedef struct
{
  typedef struct
  {
    typedef struct
    {
... // хоть до позеленения
    } TInner3;
  } TInner2;
} TOuter;
... << RSDN@Home 1.0 alpha 12 >>
Алексей Кирдин
Re[2]: Задачка от БС.
От: Klestov  
Дата: 13.11.02 07:02
Оценка:
Здравствуйте Kaa, Вы писали:

Kaa>
Kaa>while ( sizeof unsigned char )
Kaa>  while( sizeof signed short )
Kaa>    while( sizeof unsigned long )
Kaa>      return;


'(' — символ пунктуации

Избыточное цитирование удалено модератором. -- ПК
Re[3]: Задачка от БС.
От: Klestov  
Дата: 13.11.02 07:04
Оценка:
Здравствуйте Klestov, Вы писали:

K>Здравствуйте Kaa, Вы писали:


Kaa>>Здравствуйте Fantasist, Вы писали:


F>>>Как, скажите, можно записать 10(или даже более)?


Kaa>>Ну, второе, что пришло в голову:


Kaa>>
Kaa>>while ( sizeof unsigned char )
Kaa>>  while( sizeof signed short )
Kaa>>    while( sizeof unsigned long )
Kaa>>      return;
Kaa>>


Kaa>>
Kaa>>typedef struct
Kaa>>{
Kaa>>  typedef struct
Kaa>>  {
Kaa>>    typedef struct
Kaa>>    {
Kaa>>... // хоть до позеленения
Kaa>>    } TInner3;
Kaa>>  } TInner2;
Kaa>>} TOuter;
Kaa>>


Kaa>>


K>'(' — символ пунктуации


Да и символ '{' тоже
Re[2]: Задачка от БС.
От: Fantasist  
Дата: 13.11.02 07:08
Оценка:
Здравствуйте Klestov, Вы писали:


F>>

F>>

F>> Напишите корректную программу на С++, содержашую последовательность по крайней мере из десяти идущих подряд различных ключевых слов, не разделенных индификаторами, операторами, символами пунтктуации и т. д.


K>
K>do do do do do do do do do while (true) break;  while (true); while (true); while (true); while (true); while (true); while (true); while (true); while (true); while (true);
K>


Не, об этом я первым делом подумал, но: "...десяти идущих подряд различных ключевых"
Re[3]: Задачка от БС.
От: Klestov  
Дата: 13.11.02 07:09
Оценка:
Здравствуйте Fantasist, Вы писали:

F>Здравствуйте Klestov, Вы писали:


F>

F>>>
F>>>

F>>> Напишите корректную программу на С++, содержашую последовательность по крайней мере из десяти идущих подряд различных ключевых слов, не разделенных индификаторами, операторами, символами пунтктуации и т. д.


K>>
K>>do do do do do do do do do while (true) break;  while (true); while (true); while (true); while (true); while (true); while (true); while (true); while (true); while (true);
K>>


F>Не, об этом я первым делом подумал, но: "...десяти идущих подряд различных ключевых"


10 совершенно различных ? Ну тогда ... подумаем
Re: Задачка от БС.
От: Klestov  
Дата: 13.11.02 07:23
Оценка:
Здравствуйте Fantasist, Вы писали:

F>Вот тут случайно наткнулся на задачку от Страуструпа.


F>

F>

F> Напишите корректную программу на С++, содержашую последовательность по крайней мере из десяти идущих подряд различных ключевых слов, не разделенных индификаторами, операторами, символами пунтктуации и т. д.


F>Я подумал, но больше чем 8 выставить не смог:


F>
F>class A
F>{ 
F>  friend static inline const unsigned int operator or(const A&,const A&);
F> ...
F>};

F>


F>Как, скажите, можно записать 10(или даже более)?


F>Я так пологаю, что макрозамена ключевых слов считается не честной, иначе их можно очень много выставить.



#define for
#define do
#define class
#define this
#define struct
#define break
#define switch
#define case
#define friend
#define inline

for do class this struct break switch case friend inline
Re[2]: Задачка от БС.
От: Klestov  
Дата: 13.11.02 07:24
Оценка:
Здравствуйте Klestov, Вы писали:

Избыточное цитирование удалено модератором. -- ПК

K>
K>#define for
K>#define do
K>#define class
K>#define this
K>#define struct
K>#define break
K>#define switch
K>#define case
K>#define friend
K>#define inline

K>for do class this struct break switch case friend inline
K>


Не честно но работает )))))))))))))))))
Re[3]: Задачка от БС.
От: Fantasist  
Дата: 13.11.02 07:31
Оценка:
Здравствуйте Klestov, Вы писали:

K>>
K>>#define for
K>>#define do
K>>#define class
K>>#define this
K>>#define struct
K>>#define break
K>>#define switch
K>>#define case
K>>#define friend
K>>#define inline

K>>for do class this struct break switch case friend inline
K>>


K>Не честно но работает )))))))))))))))))


Ну, что так работает это понятно. Но так не интересно, так и гораздо больше уместить можно.
Re: Задачка от БС.
От: Андрей Тарасевич Беларусь  
Дата: 13.11.02 07:38
Оценка:
Здравствуйте Fantasist, Вы писали:

F>Вот тут случайно наткнулся на задачку от Страуструпа.


F>

F>

F> Напишите корректную программу на С++, содержашую последовательность по крайней мере из десяти идущих подряд различных ключевых слов, не разделенных индификаторами, операторами, символами пунтктуации и т. д.


F>Я подумал, но больше чем 8 выставить не смог:


F>
F>class A
F>{ 
F>  friend static inline const unsigned int operator or(const A&,const A&);
F> ...
F>};

F>


F>Как, скажите, можно записать 10(или даже более)?


Можно добавить еще 'volatile' и, например, 'short'. А вот 'or' иногда за полноценное ключевое слово не считают...

friend static inline const volatile unsigned short int operator or(const int&, const int&);
Best regards,
Андрей Тарасевич
Re[2]: Задачка от БС.
От: Андрей Тарасевич Беларусь  
Дата: 13.11.02 07:42
Оценка:
Здравствуйте Андрей Тарасевич, Вы писали:

АТ>Можно добавить еще 'volatile' и, например, 'short'. А вот 'or' иногда за полноценное ключевое слово не считают...


АТ>
АТ>friend static inline const volatile unsigned short int operator or(const int&, const int&);
АТ>


Но: 'friend static' — нельзя. И, кстати, параметры на 'const int&' я зря заменил. Так тоже нельзя.
Best regards,
Андрей Тарасевич
Re: Задачка от БС.
От: Klestov  
Дата: 13.11.02 07:56
Оценка:
Здравствуйте Fantasist, Вы писали:

Избыточное цитирование удалено модератором. -- ПК

F> Напишите корректную программу на С++, содержашую последовательность по крайней мере из десяти идущих подряд различных ключевых слов, не разделенных индификаторами, операторами, символами пунтктуации и т. д.


class A {
extern virtual inline operator const signed short int () { return 0L; }
};


8 но ....
Re: Задачка от БС.
От: dupamid Россия  
Дата: 13.11.02 07:59
Оценка:
Здравствуйте Fantasist, Вы писали:

F>Вот тут случайно наткнулся на задачку от Страуструпа.


F>

F>

F> Напишите корректную программу на С++, содержашую последовательность по крайней мере из десяти идущих подряд различных ключевых слов, не разделенных индификаторами, операторами, символами пунтктуации и т. д.


F>Я подумал, но больше чем 8 выставить не смог:


10!

struct S
{
    friend inline const volatile unsigned long int bitand operator and(S, S)
    {
        static unsigned long int a = 1;
        return a;
    }
};
Re[2]: Задачка от БС.
От: Андрей Тарасевич Беларусь  
Дата: 13.11.02 08:01
Оценка:
Здравствуйте Klestov, Вы писали:

K>Здравствуйте Fantasist, Вы писали:


F>>Вот тут случайно наткнулся на задачку от Страуструпа.


F>>

F>>

F>> Напишите корректную программу на С++, содержашую последовательность по крайней мере из десяти идущих подряд различных ключевых слов, не разделенных индификаторами, операторами, символами пунтктуации и т. д.


F>>Я подумал, но больше чем 8 выставить не смог:


F>>
F>>class A
F>>{ 
F>>  friend static inline const unsigned int operator or(const A&,const A&);
F>> ...
F>>};

F>>


F>>Как, скажите, можно записать 10(или даже более)?


F>>Я так пологаю, что макрозамена ключевых слов считается не честной, иначе их можно очень много выставить.


K>

K>
K>class A {
K>extern virtual inline operator const signed short int () { return 0L; }
K>};
K>

K>8 но ....

Нельзя применять 'extern' к декларации члена класса. Но опять же можно добавить 'volatile':

class A {
virtual inline operator const volatile signed short int () { return 0L; }
};
Best regards,
Андрей Тарасевич
Re[2]: Задачка от БС.
От: Alex Smirnov Россия  
Дата: 13.11.02 08:01
Оценка:
Здравствуйте dupamid, Вы писали:

D>Здравствуйте Fantasist, Вы писали:


F>>Вот тут случайно наткнулся на задачку от Страуструпа.


F>>

F>>

F>> Напишите корректную программу на С++, содержашую последовательность по крайней мере из десяти идущих подряд различных ключевых слов, не разделенных индификаторами, операторами, символами пунтктуации и т. д.


F>>Я подумал, но больше чем 8 выставить не смог:


D>10!


D>
D>struct S
D>{
D>    friend inline const volatile unsigned long int bitand operator and(S, S)
D>    {
D>        static unsigned long int a = 1;
D>        return a;
D>    }
D>};
D>


Это нечестно! Только 7!
Alex
Re[2]: Задачка от БС.
От: Klestov  
Дата: 13.11.02 08:02
Оценка:
Здравствуйте dupamid, Вы писали:

Избыточное цитирование удалено модератором. -- ПК

D>
D>struct S
D>{
D>    friend inline const volatile unsigned long int bitand operator and(S, S)


Таких ключевых слов как bitand , and нет. Не все что упомянуто в спецификации языка является ключевым словом
Re[3]: Задачка от БС.
От: Klestov  
Дата: 13.11.02 08:03
Оценка:
Здравствуйте Андрей Тарасевич, Вы писали:

Избыточное цитирование удалено модератором. -- ПК

АТ>class A {

АТ>virtual inline operator const volatile signed short int () { return 0L; }
АТ>};

Можно добавить и 'extern' — рабочий код.
Re[2]: Задачка от БС.
От: Андрей Тарасевич Беларусь  
Дата: 13.11.02 08:05
Оценка:
Здравствуйте dupamid, Вы писали:

F>>

F>>

F>> Напишите корректную программу на С++, содержашую последовательность по крайней мере из десяти идущих подряд различных ключевых слов, не разделенных индификаторами, операторами, символами пунтктуации и т. д.


F>>Я подумал, но больше чем 8 выставить не смог:


D>10!


D>
D>struct S
D>{
D>    friend inline const volatile unsigned long int bitand operator and(S, S)
D>    {
D>        static unsigned long int a = 1;
D>        return a;
D>    }
D>};
D>


Остроумно, но тем не менее согласно тому, что я вынес для себя из одной из дискуссий в comp.lang.c++, alternative tokens не являются ключевыми словами.
Best regards,
Андрей Тарасевич
Re[4]: Задачка от БС.
От: Klestov  
Дата: 13.11.02 08:08
Оценка:
Здравствуйте Klestov, Вы писали:

Избыточное цитирование удалено модератором. -- ПК

class A {
extern virtual inline operator const volatile signed short int () { return 0L; }
};


Уже 9 !!!
Re[4]: Задачка от БС.
От: Андрей Тарасевич Беларусь  
Дата: 13.11.02 08:09
Оценка:
Здравствуйте Klestov, Вы писали:

АТ>>Нельзя применять 'extern' к декларации члена класса. Но опять же можно добавить 'volatile':


АТ>>class A {

АТ>>virtual inline operator const volatile signed short int () { return 0L; }
АТ>>};

K>Можно добавить и 'extern' — рабочий код.


Что значит "рабочий код"? С++ запрещает применение 'extern' в декларациях членов класса, о чем однозначно сказано в 7.1.1/5
Best regards,
Андрей Тарасевич
Re[3]: Задачка от БС.
От: dupamid Россия  
Дата: 13.11.02 08:25
Оценка:
Здравствуйте Андрей Тарасевич, Вы писали:

АТ>Остроумно, но тем не менее согласно тому, что я вынес для себя из одной из дискуссий в comp.lang.c++, alternative tokens не являются ключевыми словами.


Это конечно, но они к ним очень близки хотя формально являются операторами. Тяжело найти компилятор который бы не считал их идентификаторами на ряду с new и delete, и запрещал бы

#define and xa-xa!


На том основании что and не идентификатор, а preprocessing-op-or-punc.
Не оверквоть!
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 13.11.02 08:26
Оценка:
Здравствуйте Klestov:

Почитай правила поведения. Иначе нарвешься на встречные меры.
... << RSDN@Home 1.0 alpha 12 >>
Алексей Кирдин
Re[5]: Задачка от БС.
От: Alex Smirnov Россия  
Дата: 13.11.02 08:27
Оценка:
Здравствуйте Андрей Тарасевич, Вы писали:

АТ>Здравствуйте Klestov, Вы писали:


АТ>>>Нельзя применять 'extern' к декларации члена класса. Но опять же можно добавить 'volatile':


АТ>>>class A {

АТ>>>virtual inline operator const volatile signed short int () { return 0L; }
АТ>>>};

K>>Можно добавить и 'extern' — рабочий код.


АТ>Что значит "рабочий код"? С++ запрещает применение 'extern' в декларациях членов класса, о чем однозначно сказано в 7.1.1/5


struct A
{
virtual inline __cdecl operator volatile const signed short int () { return 0; }
};

А __cdecl можно?
Alex
Re[3]: Задачка от БС.
От: Алекс Россия http://wise-orm.com
Дата: 13.11.02 08:29
Оценка:
Здравствуйте Андрей Тарасевич, Вы писали:

[]

АТ>Нельзя применять 'extern' к декларации члена класса. Но опять же можно добавить 'volatile':


АТ>class A {

АТ>virtual inline operator const volatile signed short int () { return 0L; }
АТ>};

А в чем смысл добавления volatile? Не касаясь данной задачи.
Re[3]: Задачка от БС.
От: Fantasist  
Дата: 13.11.02 08:30
Оценка:
Здравствуйте Андрей Тарасевич, Вы писали:


АТ>>
АТ>>friend static inline const volatile unsigned short int operator or(const int&, const int&);
АТ>>


АТ>Но: 'friend static' — нельзя. И, кстати, параметры на 'const int&' я зря заменил. Так тоже нельзя.


А почему static нельзя? У меня тоже было такое ощущение, что он там лишний, но VC его скомпилировал, и я тогда тоже подумал, а почему собственно нельзя? Чем друг функция отличается от не друга? Может быть логически static и лишний в объявлении друга, но синтаксически кому он мешает?

Как же я не догадался short поставить (да и никто до этого тоже)!! А volatile я бы и не догадался поставить, потому как слабо представляю, зачем такой модификатор возращаемому значению?

АТ>> А вот 'or' иногда за полноценное ключевое слово не считают...


Забавно, у БС "Язык С++ специальное издание" эти слова перечисленны среди ключевых, без всяких комментариев.
Re: Задачка от БС.
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 13.11.02 08:37
Оценка:
Здравствуйте Fantasist, Вы писали:

Ну че, в пару к комментарию только строковый литерал
Алексей Кирдин
Re[2]: Не оверквоть!
От: UgN  
Дата: 13.11.02 09:01
Оценка:
Здравствуйте Klestov, Вы писали:


K>
K>class TClassB {
K>};

K>int g ()
K>{
K>if (true) {}
K>else do extern const volatile signed short int operator + (int p,TClassB p2);
K>while (true);
K>}
K>


K>9.




<skipped>

else do extern inline const volatile signed short int operator + (int p,TClassB p2);

<skipped>


10.
Re[3]: Не оверквоть!
От: dupamid Россия  
Дата: 13.11.02 09:04
Оценка:
Здравствуйте UgN, Вы писали:

UgN><skipped>


UgN>else do extern inline const volatile signed short int operator + (int p,TClassB p2);


UgN><skipped>

UgN>[/ccode]

UgN>10.


inline писать писать нельзя.
Re[3]: Не оверквоть!
От: Fantasist  
Дата: 13.11.02 09:07
Оценка:
Здравствуйте UgN, Вы писали:

UgN>
UgN><skipped>

UgN>else do extern inline const volatile signed short int operator + (int p,TClassB p2);

UgN><skipped>
UgN>


UgN>10.


То же самое хотел написать, после прочтения постинга Klestov'a. Так что приз надо вручать ему.
Re[3]: Не оверквоть!
От: Alex Smirnov Россия  
Дата: 13.11.02 09:10
Оценка:
Здравствуйте UgN, Вы писали:

UgN>Здравствуйте Klestov, Вы писали:


UgN>

K>>
K>>class TClassB {
K>>};

K>>int g ()
K>>{
K>>if (true) {}
K>>else do extern const volatile signed short int operator + (int p,TClassB p2);
K>>while (true);
K>>}
K>>


K>>9.


UgN>


UgN>
UgN><skipped>

UgN>else do extern inline const volatile signed short int operator + (int p,TClassB p2);

UgN><skipped>
UgN>


UgN>10.


else do extern inline const volatile signed short int __cdecl operator + (int p,TClassB p2);


11.
Alex
Re[4]: Не оверквоть!
От: Fantasist  
Дата: 13.11.02 09:15
Оценка:
Здравствуйте Alex Smirnov, Вы писали:


AS>
AS>else do extern inline const volatile signed short int __cdecl operator + (int p,TClassB p2);
AS>


AS>11.


_cdecl — не ключевое слово С++, это расширение Microsoft'a.
Re[4]: Не оверквоть!
От: UgN  
Дата: 13.11.02 09:22
Оценка:
Здравствуйте dupamid, Вы писали:


D>inline писать писать нельзя.


Почему? Компиляется VS6 на ура...

It's compiled? First screen shows? Let's sell it!

А что до смысла -- так я скорее застрелюсь чем в своей программе ТАКОЕ напишу.
Re[4]: Не оверквоть!
От: UgN  
Дата: 13.11.02 09:24
Оценка:
Здравствуйте Fantasist, Вы писали:

F> То же самое хотел написать, после прочтения постинга Klestov'a. Так что приз надо вручать ему.


Не-а... Лучше между собой поделим!

Re[6]: Не оверквоть!
От: Klestov  
Дата: 13.11.02 09:25
Оценка:
Здравствуйте Klestov, Вы писали:

Избыточное цитирование удалено модератором. -- ПК

UgN>>It's compiled? First screen shows? Let's sell it!


UgN>>А что до смысла -- так я скорее застрелюсь чем в своей программе ТАКОЕ напишу.


K>Я тоже.


Но inline по хорошему писать нельзя. То что его понимает VC так это его проблемы — он стандарта не придерживается в отличии от C++Builder
Re[5]: Не оверквоть!
От: Fantasist  
Дата: 13.11.02 09:27
Оценка:
Здравствуйте UgN, Вы писали:

UgN>Здравствуйте dupamid, Вы писали:


UgN>

D>>inline писать писать нельзя.

UgN>Почему? Компиляется VS6 на ура...


А задачка предполагает соответсвие стандарту, а не компилятору.

UgN>А что до смысла -- так я скорее застрелюсь чем в своей программе ТАКОЕ напишу.


Ну про смысл, тут можно откровенно молчать.
Re: Задачка от БС.
От: UgN  
Дата: 13.11.02 09:33
Оценка:
Здравствуйте Fantasist, Вы писали:

F>Вот тут случайно наткнулся на задачку от Страуструпа.


F>

F> Напишите корректную программу на С++, содержашую последовательность по крайней мере из десяти идущих подряд различных ключевых слов, не разделенных индификаторами, операторами, символами пунтктуации и т. д.




Хм.

Есть такой известный постинг:

В заявлении, потрясшем весь компьютерный мир, Кен Томпсон, Деннис
Ричи и Брайан Керниган признали, что операционная система UNIX и язык
программирования Си, созданные ими -- тщательно спланированный
первоапрельский розыгрыш, "продержавшийся" более 20 лет. Выступая на
последнем Конгрессе разработчиков программного обеспечения для ОС ДЕМОС
(UnixWorld Software Development Forum), Томпсон признал следующее:

...

Мы остановились, добившись
успешной компиляции следующего:

for(;P("\n"),R-;P("|"))for(e=C;e-;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);

Мы не могли даже представить, что современные программисты будут
пытаться использовать язык, допускающий подобный оператор!

...


Ничего не напоминает?

C++ — это прикол от Страуструпа, который даже и представить не мог, что современные программисты будут
пытаться использовать язык, допускающий употребление 10 различных ключевых слов подряд...

Re: Задачка от БС.
От: Xentrax Россия http://www.lanovets.ru
Дата: 13.11.02 09:35
Оценка:
Здравствуйте Fantasist, Вы писали:

F>Как, скажите, можно записать 10(или даже более)?


Я не знаю, что это значит, но...

class AAA{
template < int > int g()
{
if (true);
else do typedef virtual operator typename volatile const signed short int (); // 11!!!
while (1);


}
};
Re[5]: Не оверквоть!
От: dupamid Россия  
Дата: 13.11.02 09:37
Оценка:
Здравствуйте UgN, Вы писали:

UgN>

D>>inline писать писать нельзя.

UgN>Почему? Компиляется VS6 на ура...


По-тому что inline нельзя указывать при объявлении в локальной области, в которой не может быть описание этой функции. А что до VS6 то это не пример поробуй здесь http://www.comeaucomputing.com/tryitout/.
Re[2]: Задачка от БС.
От: Xentrax Россия http://www.lanovets.ru
Дата: 13.11.02 09:47
Оценка:
Или даже так

class AAA{
template < int > int g()
{

if (true);
else do try typedef virtual operator typename volatile const signed short int (); // 12
while (1);
catch(...){}


}
};
Re[3]: 14
От: Xentrax Россия http://www.lanovets.ru
Дата: 13.11.02 09:50
Оценка:
И финальный вариант

// skip
else do try typedef friend virtual operator typename register volatile const signed short int (); // 14
// skip
Re[4]: 14
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 13.11.02 09:55
Оценка:
Здравствуйте Xentrax, Вы писали:

X>И финальный вариант

Хм. А че так напрягаться. Взял бы да просто скопировал всю таблицу ключевых слов в окошко, да написал рядом "Вив ля Франс! 63 подряд! Кто больше?!"
Алексей Кирдин
Re[3]: alternative tokens
От: jazzer Россия Skype: enerjazzer
Дата: 13.11.02 09:58
Оценка:
Здравствуйте Андрей Тарасевич, Вы писали:

АТ>Остроумно, но тем не менее согласно тому, что я вынес для себя из одной из дискуссий в comp.lang.c++, alternative tokens не являются ключевыми словами.


насколько я понял из Стандарта, они не являются ключевыми словами по крайней мере по двум причинам:
1) они не перечислены в таблице ключевых слов С++
2) они являются тем же самым, что обозначают, т.е. скобками, операторами и т.п, которые, в свою очередь, не являются ключевыми словами.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[5]: 14
От: Xentrax Россия http://www.lanovets.ru
Дата: 13.11.02 10:05
Оценка:
Здравствуйте Kaa, Вы писали:

Kaa>Хм. А че так напрягаться. Взял бы да просто скопировал всю таблицу ключевых слов в окошко, да написал рядом "Вив ля Франс! 63 подряд! Кто больше?!"


Не соберется

Кстати, я не совсем понимаю, что значит typedef в этом коде...
Re[3]: Задачка от БС.
От: Klestov  
Дата: 13.11.02 10:10
Оценка:
Здравствуйте Xentrax, Вы писали:

Избыточное цитирование удалено модератором. -- ПК

X>else do try typedef virtual operator typename volatile const signed short int (); // 12


В сиснаксисе try нужны скобки {}

try XXX catch (...) {} — не прокатит.
try { XXX } catch (...) {} — прокатит.
Re[2]: Задачка от БС.
От: Klestov  
Дата: 13.11.02 10:14
Оценка:
Здравствуйте Xentrax, Вы писали:

Избыточное цитирование удалено модератором. -- ПК

X>else do typedef virtual operator typename volatile const signed short int (); //


virtual недопустимо.

AAA a;
a.g<long>(); // Облом

Re[3]: Задачка от БС.
От: Xentrax Россия http://www.lanovets.ru
Дата: 13.11.02 10:32
Оценка:
K>virtual недопустимо.

K>
K>AAA a;
K>a.g<long>(); // Облом
K>

K>

Хе-хе, а кто-то говорил, что нужно инстанцировать?
В модной книжке Modern C++ Design, которую я сейчас читаю, на этом трюке построено несколько интересных вещей.


Ну а уж если инстанцировать, то тогда больше 10-и не получилось


class AAA{
    template < int > int g()
    {
        if (true);
        else do typedef operator typename volatile const signed short int ();
        while (1);
    }

    int ggg()
    {g<1>();
    }
};
Re[4]: Задачка от БС.
От: Klestov  
Дата: 13.11.02 10:46
Оценка:
Здравствуйте Xentrax, Вы писали:

Избыточное цитирование удалено модератором. -- ПК

X>
X>class AAA{
X>    template < int > int g()
X>    {
X>        if (true);
X>        else do typedef operator typename volatile const signed short int ();
X>        while (1); <...>


Если не создавать объектов то да — можно писать туфт, но ведь она НЕРАБОТАЕТ и спрашивается какие можно интересные штуки делать на том что в принципе работать не будет
Разве что плодить и размножать ошибки
Re[5]: Задачка от БС.
От: Xentrax Россия http://www.lanovets.ru
Дата: 13.11.02 10:57
Оценка:
Здравствуйте Klestov, Вы писали:

K>Если не создавать объектов то да — можно писать туфт, но ведь она НЕРАБОТАЕТ и спрашивается какие можно интересные штуки делать на том что в принципе работать не будет


Туфту (как в моем варианте без инстанцирования) конечно не нужно писать. В принципе, как уже было сказано, то, что обсуждается в данной теме в реальном коде быть не должно.

Но от инстанцирования только при необходимости есть иногда и польза.

Александреску приводит такой пример.



template <template <class> class CreationPolicy>
class WidgetManager : public CreationPolicy<Widget>
{
public:
    void DoSomething()
    {
        cout << "WidgetManager::DoSomething() invoked." << endl;
    }

    void SwitchPrototype(Widget* pNewPrototype)
    {
       CreationPolicy<Widget>& myPolicy = *this;
       delete myPolicy.GetPrototype();
       myPolicy.SetPrototype(pNewPrototype);
    }
};


Функция SwitchPrototype не будет компилироваться до тех пор, пока ее не вызовет пользователь. То есть если в используемом нами варианте CreationPolicy нет функций GetPrototype и SetPrototype, то компилятор ни слова не скажет, хотя SwitchPrototype их и вызывает.
Re[5]: Задачка от БС.
От: Кодт Россия  
Дата: 13.11.02 11:03
Оценка:
Здравствуйте Klestov, Вы писали:

<>

K>Комментарий


K>
K>/*
K>for do class this struct break switch case friend inline
K>*/
K>


За идею — +1, за оверквотинг — 0.
Перекуём баги на фичи!
Re[6]: Задачка от БС.
От: Кодт Россия  
Дата: 13.11.02 19:29
Оценка:
Здравствуйте Xentrax, Вы писали:

X>Функция SwitchPrototype не будет компилироваться до тех пор, пока ее не вызовет пользователь. То есть если в используемом нами варианте CreationPolicy нет функций GetPrototype и SetPrototype, то компилятор ни слова не скажет, хотя SwitchPrototype их и вызывает.


Это не показательно. Однажды, в каком-то файле, будут объявлены (даже не обязательно реализованы) эти функции GetPrototype/SetPrototype, а также будет использована SwitchPrototype.
Фишка в том, что шаблоны позволяют много вольностей с сигнатурами функций — лишь бы число явных (!) параметров было тем же самым. И это правильно.
А поскольку "слабое объявление функции" языком и здравым смыслом не предусмотрено, то отложенная проверка разрешена.

Аналог этого — неявное объявление функций в голом Си.
//////////////////////
// main.c

// никаких #include <stdio.h>

int main()
{
  printf("hello\n"); // Компилятор полагает, что '_printf' - это функция
                     // с прототипом extern "C" int cdecl func(...);

  printf();      // Сожрет, слинкует и бабахнет при исполнении.
  printf(12345); // поэтому лучше все-таки объявить ( включить <stdio.h> )
}

// конец файла main.c
//////////////////////
Перекуём баги на фичи!
Re[7]: Не оверквоть!
От: Аноним  
Дата: 14.11.02 08:41
Оценка:
Здравствуйте Klestov, Вы писали:

K>Здравствуйте Klestov, Вы писали:


K>>Здравствуйте UgN, Вы писали:


UgN>>>Здравствуйте dupamid, Вы писали:


UgN>>>

D>>>>inline писать писать нельзя.

UgN>>>Почему? Компиляется VS6 на ура...


UgN>>>It's compiled? First screen shows? Let's sell it!


UgN>>>А что до смысла -- так я скорее застрелюсь чем в своей программе ТАКОЕ напишу.


UgN>>>


K>>Я тоже.


K>Но inline по хорошему писать нельзя. То что его понимает VC так это его проблемы — он стандарта не придерживается в отличии от C++Builder


Это завист от версии. VC7.1 лучше соответвует стандарту, чем C++Builder6 и вряд ли это изменится в будущем.
Re[8]: Не оверквоть!
От: Кодт Россия  
Дата: 14.11.02 10:24
Оценка:
Здравствуйте Аноним, Вы писали:

А>Здравствуйте Klestov, Вы писали:
K>>Здравствуйте Klestov, Вы писали:
K>>>Здравствуйте UgN, Вы писали:
UgN>>>>Здравствуйте dupamid, Вы писали:

Вы издеваетесь, что ли? Посмотрите на название темы!
Перекуём баги на фичи!
Re[9]: Не оверквоть!
От: Atilla Россия  
Дата: 14.11.02 10:30
Оценка:
Здравствуйте Кодт, Вы писали:



К>Здравствуйте Аноним, Вы писали:

К>

А>>Здравствуйте Klestov, Вы писали:
K>>>Здравствуйте Klestov, Вы писали:
K>>>>Здравствуйте UgN, Вы писали:
UgN>>>>>Здравствуйте dupamid, Вы писали:

К>Вы издеваетесь, что ли? Посмотрите на название темы!


Надо перевести, а то они похоже русского языка не понимают:

Оверквотить [от англ. over+quote] комп. сленг цитировать то, что относится к делу и ... все остальное. Наказание: ++

Кр-ть — с.т.
Re[3]: Задачка от БС.
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 14.11.02 10:54
Оценка:
Здравствуйте Klestov, Вы писали:


[НАДО ВЫРЕЗАТЬ НЕНУЖНОЕ!]

K>

K>Но 10 ключевых слов пока не удалось никому написать

А нолик — за оверквотинг...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.