ここに私の最初の試みだ -は、特定の列挙値に関数パラメータを制限
私はallowLeftOnly
機能から何をしたいです
#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
}
だけprops::left
か、私は明示的にパラメータとして指定し、他の人のためにコンパイルに失敗他人を受け入れることですが。それは可能ですか?
'p'は、あなたがしたいことをするためのテンプレートパラメータにする必要があります。 – Simple
このソリューションで解決したい*実際の問題は何ですか? *なぜ*あなたはこれをしたいですか? [XY問題](http://xyproblem.info/)を読んで質問がどのようにその例であるかを考えてください。 –
@Someprogrammerdude実質的な何かを解決しようとしていない、C++のTMP側を学ぼうとする –