/* -------------------------------------------------- Test program to give a rough measure of "template bloat." If the macro "DIFFERENT" is defined at compile-time, this program creates a list for 100 different types of T. Otherwise, it creates 100 instances of a list of a single pointer type. A capable compiler will recognise that the binary representation of list is the same for all T and it need retain only a single copy of the instantiation code in the program. --------------------------------------------------*/ #include class x0; class x1; class x2; class x3; class x4; class x5; class x6; class x7; class x8; class x9; class x10; class x11; class x12; class x13; class x14; class x15; class x16; class x17; class x18; class x19; class x20; class x21; class x22; class x23; class x24; class x25; class x26; class x27; class x28; class x29; class x30; class x31; class x32; class x33; class x34; class x35; class x36; class x37; class x38; class x39; class x40; class x41; class x42; class x43; class x44; class x45; class x46; class x47; class x48; class x49; class x50; class x51; class x52; class x53; class x54; class x55; class x56; class x57; class x58; class x59; class x60; class x61; class x62; class x63; class x64; class x65; class x66; class x67; class x68; class x69; class x70; class x71; class x72; class x73; class x74; class x75; class x76; class x77; class x78; class x79; class x80; class x81; class x82; class x83; class x84; class x85; class x86; class x87; class x88; class x89; class x90; class x91; class x92; class x93; class x94; class x95; class x96; class x97; class x98; class x99; int main() { #if defined DIFFERENT // create 100 lists of different pointer types std::list v0; std::list v1; std::list v2; std::list v3; std::list v4; std::list v5; std::list v6; std::list v7; std::list v8; std::list v9; std::list v10; std::list v11; std::list v12; std::list v13; std::list v14; std::list v15; std::list v16; std::list v17; std::list v18; std::list v19; std::list v20; std::list v21; std::list v22; std::list v23; std::list v24; std::list v25; std::list v26; std::list v27; std::list v28; std::list v29; std::list v30; std::list v31; std::list v32; std::list v33; std::list v34; std::list v35; std::list v36; std::list v37; std::list v38; std::list v39; std::list v40; std::list v41; std::list v42; std::list v43; std::list v44; std::list v45; std::list v46; std::list v47; std::list v48; std::list v49; std::list v50; std::list v51; std::list v52; std::list v53; std::list v54; std::list v55; std::list v56; std::list v57; std::list v58; std::list v59; std::list v60; std::list v61; std::list v62; std::list v63; std::list v64; std::list v65; std::list v66; std::list v67; std::list v68; std::list v69; std::list v70; std::list v71; std::list v72; std::list v73; std::list v74; std::list v75; std::list v76; std::list v77; std::list v78; std::list v79; std::list v80; std::list v81; std::list v82; std::list v83; std::list v84; std::list v85; std::list v86; std::list v87; std::list v88; std::list v89; std::list v90; std::list v91; std::list v92; std::list v93; std::list v94; std::list v95; std::list v96; std::list v97; std::list v98; std::list v99; #else // create 100 instances of a single list type std::list v0; std::list v1; std::list v2; std::list v3; std::list v4; std::list v5; std::list v6; std::list v7; std::list v8; std::list v9; std::list v10; std::list v11; std::list v12; std::list v13; std::list v14; std::list v15; std::list v16; std::list v17; std::list v18; std::list v19; std::list v20; std::list v21; std::list v22; std::list v23; std::list v24; std::list v25; std::list v26; std::list v27; std::list v28; std::list v29; std::list v30; std::list v31; std::list v32; std::list v33; std::list v34; std::list v35; std::list v36; std::list v37; std::list v38; std::list v39; std::list v40; std::list v41; std::list v42; std::list v43; std::list v44; std::list v45; std::list v46; std::list v47; std::list v48; std::list v49; std::list v50; std::list v51; std::list v52; std::list v53; std::list v54; std::list v55; std::list v56; std::list v57; std::list v58; std::list v59; std::list v60; std::list v61; std::list v62; std::list v63; std::list v64; std::list v65; std::list v66; std::list v67; std::list v68; std::list v69; std::list v70; std::list v71; std::list v72; std::list v73; std::list v74; std::list v75; std::list v76; std::list v77; std::list v78; std::list v79; std::list v80; std::list v81; std::list v82; std::list v83; std::list v84; std::list v85; std::list v86; std::list v87; std::list v88; std::list v89; std::list v90; std::list v91; std::list v92; std::list v93; std::list v94; std::list v95; std::list v96; std::list v97; std::list v98; std::list v99; #endif return 0; }