সি ++ 98 (211 বাইট) জি ++ - 5 (উবুন্টু 5.2.1-23ubuntu1 ~ 12.04) 5.2.1 0151031
আমি প্রিপ্রসেসরটি মোটেও ব্যবহার না করেই সি ++ এ কতটা ভাল করতে পারি তা দেখতে চেয়েছিলাম। এই প্রোগ্রামটি আউটপুট 2,139,390,572 বাইট উত্পাদন করে, যার বেশিরভাগই একক ত্রুটি বার্তা।
template<int i,class S,class T>struct R{typedef R<i,typename R<i-1,S,S>::D,typename R<i-1,S,S>::D>D;};template<class S,class T>struct R<0,S,T>{typedef S D;};void f(){R<27,float,R<24,int*const*,int>::D>::D&E=4;}
me@Basement:~/src/junk$ ls -l a.C
-rw-rw-r-- 1 me me 211 Apr 27 21:44 a.C
me@Basement:~/src/junk$ g++-5 a.C -fmax-errors=1 2>a.C.errors.txt
me@Basement:~/src/junk$ ls -l a.C.errors.txt
-rw-rw-r-- 1 me me 2139390572 Apr 27 22:01 a.C.errors.txt
Ungolfed:
template <int i, class S, class T>
struct R {
typedef R<i, typename R<i-1,S,S>::D, typename R<i-1,S,S>::D> D;
};
template <class S, class T>
struct R<0, S, T> {
typedef S D;
};
void f() {
R<27, float, R<24, int*const*, int>::D>::D &E = 4;
}
এই প্রোগ্রামটি একটি পুনরাবৃত্ত স্ট্রাকচার টেম্পলেটটি সংজ্ঞায়িত করে কাজ করে যা টাইপডেফ ডি ধারণ করে যার দুটি কপি থাকে। এটির ফলে একটি প্রকারের নাম ঘটে যা তাত্ক্ষণিকভাবে বৃদ্ধি পায় যা ত্রুটি বার্তায় পুরো মুদ্রিত হয়। দুর্ভাগ্যক্রমে, (1 << 31) বাইটের চেয়ে লম্বা ত্রুটি বার্তা প্রিন্ট করার চেষ্টা করার সময় g ++ টি চেপে গেছে। 2,139,390,572 বাইট আমি সীমা ছাড়িয়ে যেতে পারিনি এমন সবচেয়ে কাছের ছিল। আমি আগ্রহী যদি কেউ 27, float, 24, int*const*
সীমাটির নিকটবর্তী হওয়ার জন্য পুনরাবৃত্তি সীমা এবং পরামিতি প্রকারগুলি সামঞ্জস্য করতে পারে (বা এমন একটি সংকলক সন্ধান করতে পারে যা আরও দীর্ঘতর ত্রুটির বার্তা মুদ্রণ করতে পারে)।
ত্রুটি বার্তা থেকে উদ্ধৃত অংশ:
a.C: In function ‘void f()’:
a.C:1:208: error: invalid initialization of non-const reference of type
‘R<27, float, R<24, R<23, R<22, R<21, R<20, R<19, R<18, R<17, R<16, R<15,
R<14, R<13, R<12, R<11, R<10, R<9, R<8, R<7, R<6, R<5, R<4, R<3, R<2, R<1,
int* const*, int* const*>, R<1, int* const*, int* const*> >, R<2, R<1, int*
const*, int* const*>, R<1, int* const*, int* const*> > >, R<3, R<2, R<1,
int* const*, int* const*>, R<1, int* const*, int* const*> >, R<2, R<1, int*
const*, int* const*>, R<1, int* const*, int* const*> > > >, R<4, R<3, R<2,
R<1, int* const*, int* const*>, R<1,
...
int* const*, int* const*> > > > > > > > > > > > > > > > > > > > > > > >
>::D& {aka R<27, R<26, R<25, R<24, R<23, R<22, R<21, R<20, R<19, R<18,
R<17, R<16, R<15, R<14, R<13, R<12, R<11, R<10, R<9, R<8, R<7, R<6, R<5,
R<4, R<3, R<2, R<1, float, float>, R<1, float, float> >, R<2, R<1, float,
float>, R<1, float, float> > >, R<3, R<2, R<1, float, float>, R<1, float,
float> >, R<2, R<1, float, float>, R<1, float, float> > > >, R<4,
...
, R<1, float, float>, R<1, float, float> > >, R<3, R<2, R<1, float, float>,
R<1, float, float> >, R<2, R<1, float, float>, R<1, float, float> > > > > >
> > > > > > > > > > > > > > > > > > > > >&}’ from an rvalue of type
‘int’
template<int i,class S,class T>struct R{typedef R<i,typename
R<i-1,S,S>::D,typename R<i-1,S,S>::D>D;};template<class S,class T>struct
R<0,S,T>{typedef S D;};void
f(){R<27,float,R<24,int*const*,int>::D>::D&E=4;}
^
compilation terminated due to -fmax-errors=1.
2,139,390,572 বাইট / 211 বাইট = 10,139,291.8
gcc -Wall -pedantic
প্লেইন ol` থেকে ভিন্নgcc
থেকে ভিন্নtcc
কিছু অন্যান্য গ কম্পাইলার থেকে সম্ভবতঃ ভিন্ন।