我试图写下我的第一个概念,但遇到了一个我不理解的错误。
这是代码:
#include <type_traits>
#include <string>
template<typename Type>
concept String = std::is_same_v<Type,const char*>
|| std::is_same_v<Type,std::string>;
template<String Type>
void function(Type&& string)
{
std::forward<Type>(string);
}
int main()
{
std::string string{"7"};
function(string);
return 0;
}
这是输出:
错误:使用不满足约束的函数“void function(Type) [with Type = std::__cxx11::basic_string]”
我读过requires,但我不明白如何在这种情况下应用它?
所以,结果是这样的:
诚然,同样,以友好的方式,你将不得不
const char*专攻。