首页 > 解决方案 > 如何为类型要求匹配某种类型

问题描述

有没有办法强制概念中的类型要求与特定类型匹配?Fe 分配器中的 size_type 是 size_t 还是可转换为 size_t ?

标签: c++c++20c++-concepts

解决方案


是的,你可以通过使用来做到这一点,covertible_to<T>看看下面的例子。使用convertible_to您可以检查一个类型是否可转换为另一种类型。

#include <concepts>
#include <string>

template<typename T>
concept Convertable = requires(T a) {
    { a } -> std::convertible_to<std::size_t>;
};


template<Convertable T>
class Test{

};

int main(){
    Test<int> a;
    Test<std::string> b; //Compilation will fail.
}

推荐阅读