提问人:Luh0 提问时间:10/15/2022 更新时间:10/15/2022 访问量:92
有没有类似 std::unconvertible_to 的东西?
Is there something like std::unconvertible_to?
问:
我正在尝试使用一个模板参数,该参数允许是除一种类型之外的所有类型。我不知道怎么做。 我是概念的新手,还没有完全理解它们,但这就是我实现 std::convertible_to 的方式:
template <typename T>
concept notSomeType = requires(T v)
{
{v} -> std::convertible_to<SomeType>;
};
有没有内置类似 std::unconvertible_to 的东西?
如果没有,还有其他方法可以做到这一点吗?
答:
3赞
fabian
10/15/2022
#1
您可以简单地创建一个否定以下概念的概念:std::convertible_to
template<class From, class To>
concept NotSomeType = !std::convertible_to<From, To>;
template<NotSomeType<int> T>
void f(T)
{
std::cout << "Not convertible to int\n";
}
template<std::convertible_to<int> T>
void f(T)
{
std::cout << "convertible to int\n";
}
int main()
{
f(1);
f('a');
f("Hello world");
f([]() {});
}
评论