Я написал класс шаблона, который должен работать для double и std :: complex. как и предполагалось, все мои методы находятся в файле .hpp. все кроме одного. я должен был специализировать метод, потому что в каком-то месте мне приходится вычислять квадрат двойника или норму std :: complex. более явно для "двойной специализации" (A):C++ template double std :: complex <double> norm и product
double a(2.0);
double b(0.0);
b = a*a;
для "комплексной специализации" (B):
std::complex<double> a(2.0,3.0);
double b(0.0);
b = std::norm(a);
мои вопросы:
находится там способ избежать специализации диссертаций с помощью функции, которая работает как для двух, так и для сложных? (потому что std :: norm работает только для сложного ...)
или единственное решение состоит в том, чтобы отдать двойной а специализации (A) в комплекс, а затем использовать только специализацию (B) как общий шаблон (работает как для двух, так и для сложных)?
спасибо я вас понимаю! но у меня все еще есть метод, который специализирован и должен быть в отдельном файле .cpp ... – PinkFloyd
@ user2110463 Он не обязательно должен быть в .cpp-файле. Я отметил специализации 'inline', поэтому они могут находиться в заголовке вдоль остальных ваших функций. – Angew
ОК теперь я понимаю еще одно преимущество встраивания ... thx – PinkFloyd