有一个std::convertible_to<T>的概念,用来检查调用的结果是否可以转换成某种类型。
但是我想检查一个函数是否有确切的返回类型。我该怎么做呢?
发布于 2021-09-22 07:25:54
您可以编写一个使用std::same_as检查函数返回类型的概念:
示例:
#include <concepts> // std::same_as
template<typename FuncType, typename RetType>
concept SameReturn = requires(FuncType func) {
{ func() } -> std::same_as<RetType>;
};
template<typename Callable> requires SameReturn<Callable, int>
auto test(Callable func)
{
return func();
}
int main()
{
std::cout << test([]() {return 1; });
// std::cout << test([]() {return "string literals"; }); // error!
return 0;
} ()
https://stackoverflow.com/questions/69279698
复制相似问题