2

私は、一意の予約語を最大数含む C++ コードの行を記述する方法について、長年の思考実験を行っています。このチャレンジでは、好きなだけキーワードを複製できますが、重要なのは、使用する固有のキーワードの数だけです。たとえば、次のように書くと

void MyFunction(int, int, int, int);

voidint には 4 つのインスタンスがありますが、上記の行には 2 つの一意のキーワード ( and int、つまり)しか含まれていないため、スコアは 2です。この一行ですが、

void MyFunction(int, double, short, long);

5 つの予約語のスコアは 5 です。

これまでのところ、私が思いついた最高のものは

export template <typename T, class C>
inline void DiabolicalFunc (int, char, short, 
                            long, double, signed, 
                            unsigned, bool, float,
                            wchar_t, const int,
                            volatile int, 
                            enum MyEnum,
                            void* (*)(size_t) = &(operator new), 
                            void (*)(void*) = &(operator delete), 
                            int = const_cast<int*>(static_cast<const int *>(reinterpret_cast<int*>(0))), 
                            void* = dynamic_cast<void*>(reinterpret_cast<ios_base*>(0)),
                            bool = true, bool = false, int = sizeof(int), 
                            const std::type_info& = typeid(int),
                            struct MyStruct = MyStruct(), union MyUnion = MyUnion(), 
                            int = 0 and 0,
                            int = 0 bitand 0,
                            int = 0 bitor 0, 
                            int = compl 0, 
                            int = not 0, 
                            int = 0 not_eq 0,
                            int = 0 or 0, 
                            int = 0 xor 0) throw();

これにはなんと 39 個の予約語が含まれています。ただし、宣言する前にenum MyEnumstruct MyStruct、およびを定義していることを前提としています。union MyUnionはい、使用する前に適切なタイプを設定すると、これコンパイルされます (ただし、 について警告が表示されます)。g++export

さらにユニークなキーワードを 1 行のコードに詰め込む方法を誰かが見つけたら、私は興味があります。誰かが私の例を上回ることができますか? それとも、それをさらに悪魔的なものにする方法を見つけますか?

C++ は自由形式であるため、「コード行」は構造の適切な尺度ではないことを知っていますが、これが何を意味するかについて合理的な解釈ができると思います。

編集:関数の最後に追加throw()して、そこにもう1つのキーワードを取得しました。

4

3 に答える 3

10

あなたが言うC++コードの行?

// asm auto bool break case catch char class const ...

私は子供です、私は子供です。

于 2011-02-16T09:01:19.967 に答える
0

decltypeC++0x を許可すると、T 型と C 型のオブジェクトの合計の を返すことができます。

于 2011-02-16T08:58:35.283 に答える
0

関数に本体を追加すると、いくつかのregisterandauto変数、try {} catch() {}ブロック、aswitchと abreakを含む a、returnおよび他のほとんどすべてのC++ キーワード
を追加できます 。

于 2011-02-16T09:00:53.473 に答える