C++ C++;错误:推断出参数'的冲突类型;T';字符串与常量字符*
因此,我正在为deque容器编写一个简单的模板化搜索函数。代码如下:C++ C++;错误:推断出参数'的冲突类型;T';字符串与常量字符*,c++,string,templates,c++11,char,C++,String,Templates,C++11,Char,因此,我正在为deque容器编写一个简单的模板化搜索函数。代码如下: template <typename T> void searchInDequeFor(std::deque<T> Deque, T searchValue) { for(const auto & element : Deque) { if(Deque.empty()) {
template <typename T>
void searchInDequeFor(std::deque<T> Deque, T searchValue)
{
for(const auto & element : Deque)
{
if(Deque.empty())
{
std::cout << "Deque is empty, nothing to search for..." << "\n";
}
else if(element==searchValue)
{
std::cout << searchValue << " matches " << element << ", an element in the deque" << "\n";
}
}
}
模板
void searchInDequeFor(std::deque deque,T searchValue)
{
用于(常量自动和元素:Deque)
{
if(Deque.empty())
{
std::cout好的,std::string
和const char*
(要修复函数以允许隐式转换,请确保只从第一个参数推导T
,而不是从第二个参数推导
template <typename T>
struct identity { typedef T type; };
template <typename T>
void searchInDequeFor(std::deque<T> Deque, typename identity<T>::type searchValue)
模板
结构标识{typedef T type;};
模板
void searchInDequeFor(std::deque deque,typename identity::type searchValue)
这样,当您传入一个std::deque
和一个const char*
时,编译器将只能使用第一个参数来确定要使用哪个T
。只有在T
被固定为std::string
后,第二个参数的类型才能解析为std::string
,这是将允许从const char*
进行隐式转换这非常好!谢谢!
candidate template ignored: deduced conflicting types for parameter 'T' ('std::__1::basic_string<char>' vs. 'const char *')
searchInDequeFor(myDeque,std::string("pear"));
template <typename T>
struct identity { typedef T type; };
template <typename T>
void searchInDequeFor(std::deque<T> Deque, typename identity<T>::type searchValue)