【发布时间】:2019-10-18 21:29:30
【问题描述】:
所以我希望我的函数接受一个模板化参数,如下所示:
template <typename T>
void foo(T test)
我只希望foo 接受我指定的所有这些类型。假设我有 Image<cam1>、Image<cam2>、Other<cam1>--> 如果我只希望 Image<cam1> 和 Image<cam2> 成为进入 foo() 的类型,我该如何指定?
【问题讨论】:
-
C++20 会有概念,所以你可以很容易地做到这一点。对于 C++20 之前的版本,您可以为此使用
std::enable_if,使用 SFINAE 技术。 -
@geza 抱歉,这不是很清楚。你能再解释一下吗?
-
为什么需要模板化参数?是否有您想要允许哪些类型的模式? (随心所欲并不一定是坏事,但它确实与使用模板的典型原因背道而驰。)
标签: c++ templates sfinae template-argument-deduction