我卡住瞭如何使用regex_match
模板與我自己的內存STL分配器。std :: regex_match與另一個Allocator
這是我的代碼:
FaF::smatch stringResults;
std::regex expression("expression");
std::regex_match(FaF::string-variable, stringResults, expression);
對於std::match
和std::string
我成功了,所以我用它在上面的例子:
namespace FaF
{
using smatch = std::match_results<std::string::const_iterator,
Allocator<std::string::const_iterator>>;
using string = std::basic_string<char, std::char_traits<char>, Allocator<char>>;
}
我的分配器有一些記錄,我可以清楚地看到,是的,它確實被使用。 當我正確理解cppreference時,std::regex
沒有分配器,但std::regex_match
does。
我的問題:
如何定義 - 根據上述類型 - 在namespace FaF
額外的模板,根據std::regex_match
這是用我的STL內存分配器?
我不確定我明白你認爲你有什麼問題。 'std :: regex_match'通過稱爲「template argument deduction」的魔法自動從第一個和第二個參數中選擇分配器。這不是你想要的嗎?你覺得你需要什麼額外的定義,爲什麼? –
順便說一句,'std :: match_results'使用它的分配器來分配'std :: sub_match '的實例,而不僅僅是'Iter',因爲你的typedef表明你相信。 –
@IgorTandetnik 1)我已經懷疑我還必須擴展'Iter'項目。 2)我不認爲'std :: regex_match'確實使用了相同的分配器,因爲我的日誌顯示我被稱爲5次,'stringResults'有5個項目。我將它也更改爲4,並且日誌顯示了4個分配。所以我問了這個問題,因爲對我來說很顯然沒有「模板論證扣除」。 –