【发布时间】:2016-12-14 03:40:16
【问题描述】:
所以I've written an answer 使用模板化函数来选择对象类型。
我已经定义了类型:
struct pt {
double t;
double e;
double c_vis;
double c_invis;
};
struct pt_weighted : pt {
double sigma;
};
我的模板化函数如下所示:
template <typename T>
void foo() {
for(T point; dataFile >> point;) {
set.curve.push_back(point); // store point
data_numPoints++; // collect some stats
set.curveAvg += point.e;
}
}
鉴于minimizator_weighted 决定在运行时使用哪种类型,我调用foo 时使用:
minimizator_weighted ? foo<data_set::pt_weighted>() : foo<data_set::pt>();
Richard Hodges is suggesting 使用Argument Dependent Lookup (ADL) 来避免“显式专用模板函数”。我只是不确定他的意思,所以我想我会提出一个新问题,以便他或其他人可以在答案中进一步解释。
【问题讨论】:
标签: c++ runtime specialization argument-dependent-lookup function-templates