Допустим, я создаю свою собственную библиотеку в пространстве имен l
.Было бы полезно сделать как можно больше членов шаблонизированного пространства имен?Это побудило бы компилятор генерировать инструкции только для членов, которые фактически вызываются пользователем библиотеки.Чтобы прояснить мою точку зрения, я продемонстрирую ее здесь:
1)
namespace l{
template <typename = void>
int f() { return 3; }
}
против
2)
namespace l{
int f() { return 3; }
}
Этоне вызывается в main, чтобы показать разницу.
int main() { return EXIT_SUCCESS; }
функция 1) не требует дополнительных инструкций для l::f()
:
main:
push rbp
mov rbp, rsp
mov dword ptr [rbp - 4], 0
mov eax, 0
pop rbp
ret
функция 2) требует дополнительных инструкций дляl::f()
(Если, опять же, l::f()
не вызывается):
l::f()
push rbp
mov rbp, rsp
mov eax, 3
pop rbp
ret
main:
push rbp
mov rbp, rsp
mov dword ptr [rbp - 4], 0
mov eax, 0
pop rbp
ret