【发布时间】:2013-08-27 14:21:41
【问题描述】:
我有这样的课:
template <typename... Types>
class Evaluator
{
public:
template <typename... Types>
Evaluator(Types... args)
{
list = std::make_tuple(args...);
}
template <typename T>
bool Evaluate(const T& input)
{
// based on a specific input type T, here I want to call
// Evaluate(input) for a specific element in the tuple. i.e. the
// element that has method Evaluate, for which Evaluate(input) compiles
return std::get<0>(list).Evaluate(input);
}
private:
std::tuple<Types...> list;
};
更新对于没有正确的“Evaluate(input) -> bool”函数的实例,该函数可能返回false,并评估所有与bool结果匹配的实例||
【问题讨论】:
-
你的构造函数本身不应该是一个模板。
-
std::get<0>是一个例子还是你真的想遍历每个元素并调用Evaluate(假设他们有方法)? -
如果更多元素匹配怎么办?
-
@0x499602D2 我想在理想情况下对所有具有匹配方法的人调用评估。
-
@Ghita
Evaluate是否返回bool?如果更多类型匹配,&&'ed 或 ||'d 结果,你想返回什么?
标签: c++ c++11 variadic-templates overload-resolution