isIn
を取る関数を作りたかったのstd::span
です。
これは私の試みです:
#include <span>
template <typename T1, typename T2>
bool isIn(const T1& x, std::span<const T2> v)
{
for (const T2& e : v)
if (e == x)
return true;
return false;
}
// this one would work, but I want my function to be generic
/*bool isIn(int x, std::span<const int> v)
{
for (int e : v)
if (e == x)
return true;
return false;
}*/
int main()
{
const int v[] = {1, 2, 3, 4};
isIn(2, v); // I want this, but doesn't compile
//isIn(2, std::span<const int>(v)); // this works fine
}
ご覧のとおり、次のキャストを行うことで回避できます。
isIn(2, std::span<const int>(v));
しかし、それは非常に冗長であり、次のようなことをしたいと思います:
isIn(2, v);
達成できる方法はありますか?