【发布时间】:2017-06-30 10:38:05
【问题描述】:
这是我的第一次尝试-
#include <iostream>
using namespace std;
enum class props {
left, right
};
template<typename T>
auto allowLeftOnly(T p) -> decltype((p==props::left), void())
{
cout << "Wow!";
}
int main() {
props p1 = props::left;
props p2 = props::right;
allowLeftOnly(p1);
// allowLeftOnly(p2); // should fail to compile
}
我对@987654323@ 函数的要求是只接受props::left 或我明确指定为参数且无法为其他人编译的其他参数。这可能吗?
【问题讨论】:
-
您必须将
p设为模板参数才能执行您想要执行的操作。 -
您想用这个解决方案解决的实际问题是什么? 为什么你想这样做?请花一些时间阅读有关the XY problem 的信息,并思考您的问题如何成为它的一个例子。
-
@Someprogrammerdude 没有尝试解决任何实质性问题,而是尝试学习 c++ 的 TMP 方面
标签: c++ c++11 templates c++14 c++17