我正在嘗試有一個模板引數,它允許是每種型別,除了一個。我不知道怎么做。我是概念的新手,還沒有完全理解它們,但這就是我實作 std::convertible_to 的方式:
template <typename T>
concept notSomeType = requires(T v)
{
{v} -> std::convertible_to<SomeType>;
};
有沒有像 std::unconvertible_to 內置的東西?
如果沒有,還有其他方法可以做到這一點嗎?
uj5u.com熱心網友回復:
您可以簡單地創建一個否定的概念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([]() {});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/519917.html
