【发布时间】:2020-01-29 08:06:14
【问题描述】:
有人能解释一下为什么在下面的代码中有一行会产生错误吗? 为了比较,下一行编译正确。 由于某些原因,转换为 std::string 与提供 std::string 类型变量不同。 我正在使用带有默认选项的 Visual Studio 2019、C++、控制台应用程序。
#include <iostream>
#include <regex>
int main()
{
std::regex e;
std::smatch sm;
std::string str("abc");
std::regex_search(std::string("abc"), sm, e); // Doesn't compile
std::regex_search(str, sm, e); // Compiles correctly
}
这是预编译器给出的错误 对不起意大利人...
Gravità Codice Descrizione Progetto File Riga Stato eliminazione Errore (attivo) E1776 impossibile fare riferimento a funzione "std::regex_search(const std::basic_string<_elem _sttraits _stalloc> &&, std::match_results::const_iterator, _Alloc> &, const std::basic_regex<_elem _rxtraits> &, std::regex_constants::match_flag_type = std::regex_constants::match_default) [con _StTraits=std::char_traits, _StAlloc=std::allocator, _Alloc=std::allocator, std::_String_iter_types>>> >>, _Elem=char, _RxTraits=std::regex_traits]" (dichiarato alla riga 2300 di "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include \正则表达式”)。 È una funzione eliminata ConsoleApplication3 C:\Users\munarid\source\repos\Unit-Test-Generation_Support\ConsoleApplication3\ConsoleApplication3.cpp 9
【问题讨论】:
-
您应该在问题中包含编译器的错误消息:)
-
如果你访问过这个web,你会在你想调用的重载上看到
= delete。所以它不编译也就不足为奇了。