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

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

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



Но 10 ключевых слов пока не удалось никому написать
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]: Задачка от БС.
От: dupamid Россия  
Дата: 13.11.02 11:15
Оценка: 10 (1)
Здравствуйте Xentrax, Вы писали:

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


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

MS Visual C++, которым здесь большинство пользуется не почти не проверяет синтаксис не настроенных шаблонов функций, поэтому ошибки и не выдаются до момента настройки.
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...
Пока на собственное сообщение не было ответов, его можно удалить.