Учитывая следующий код:
template<typename T>
struct A
{
void f(){...}
friend T;
};
template<typename T>
struct B
{
void f(T){...}//code depends on T
void g(){...}//code doesn't depends on T
}
Как видите, "код" в struct A
не зависит от T
.
Будет ли компилятор генерировать другой код в последнем двоичном файле для каждого T
, используемого для создания экземпляра A
?
Тот же вопрос для функции B::g()
, будет ли компилятор использовать одну и ту же функцию для всех экземпляров B<T>
, когда это возможно, например this
не используется в g()
, поэтому не зависит от T
? Имеет ли стандарт какой-либо спецификации для этого случая?