В нашем проекте у нас есть что-то вроде этого:
struct PointI
{
// methods for getting, setting and calculating some point stuff
private:
int x;
int y;
};
struct PointD
{
// methods for getting, setting and calculating some point stuff
private:
double x;
double y;
};
Я предложил изменить это на что-то вроде этого:
template<typename T>
struct Point
{
// methods for gettig, setting and calculating some point stuff
private:
T x;
T y;
};
typedef Point<int> PointI;
typedef Point<double> PointD;
typedef Point<float> PointF;
Но это было отклонено, и мне сказали: "У этого подхода есть одна проблема - манипулирование и экспорт символов C ++. Шаблоны настолько длинные, когда используются в экспортируемых символах (API, который их использует), и нет способа экспортировать шаблоны ».
Является ли этот аргумент настолько сильным, чтобы допускать много дублирования кода?