当我开始对 C++1x 特性进行更深入的试验时,我遇到了一些想法。例如,当有这个构造
template<unsigned int N> unsigned int functionForTest(const char (&a)[N]);
和它的用法时
functionForTest("Hello"); ---> const char [6]
functionForTest("Hello World") ---> const char [12];
然后 c++ 最终实例化了具有 2 个不同参数类型的 2 个函数,这意味着如果此函数以不同大小使用,则二进制大小会增加。那效率如何?它是编译器特定的吗?传统的类 C 数组和大小传递在这里不是更有效吗?
这就是我构建的方式g++ -std=c++17 -Xlinker -Map=output.map compilerDiffs.cpp -o test.exe
,这是检查地图文件的样本以得出这个结论
地图文件样本