私は、一意の予約語を最大数含む C++ コードの行を記述する方法について、長年の思考実験を行っています。このチャレンジでは、好きなだけキーワードを複製できますが、重要なのは、使用する固有のキーワードの数だけです。たとえば、次のように書くと
void MyFunction(int, int, int, int);
void
int には 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 MyEnum
、struct MyStruct
、およびを定義していることを前提としています。union MyUnion
はい、使用する前に適切なタイプを設定すると、これはコンパイルされます (ただし、 について警告が表示されます)。g++
export
さらにユニークなキーワードを 1 行のコードに詰め込む方法を誰かが見つけたら、私は興味があります。誰かが私の例を上回ることができますか? それとも、それをさらに悪魔的なものにする方法を見つけますか?
C++ は自由形式であるため、「コード行」は構造の適切な尺度ではないことを知っていますが、これが何を意味するかについて合理的な解釈ができると思います。
編集:関数の最後に追加throw()
して、そこにもう1つのキーワードを取得しました。