Используйте std :: regex_search Calling из модуляC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Используйте std :: regex_search Calling из модуля

Сообщение Anonymous »

Я наткнулся на странную проблему. Я сделал модуль C ++ 20 со следующим контентом (файл module.cppm): < /p>
module;
#include
#include

export module foo;

export namespace bar {
using std::regex;
using std::smatch;
using std::regex_search;
using std::string;
}
< /code>
Я использую этот модуль в следующем коде (файл main.cpp): < /p>
import foo;

int main() {
bar::regex regex;
bar::smatch match;
bar::string s;
bar::regex_search(s, match, regex);
}
< /code>
my cmakelists.txt выглядит так: < /p>
cmake_minimum_required(VERSION 4.0.0)
set(CMAKE_CXX_STANDARD 23)

project(cpptest)

add_library(module STATIC)
target_sources(module PUBLIC FILE_SET CXX_MODULES FILES module.cppm)

add_executable(cpptest main.cpp)
target_link_libraries(cpptest module)
< /code>
При попытке создать следующие команды: < /p>
cmake -B build -G Ninja
cmake --build ./build/
< /code>
Я получаю следующие ошибки: < /p>
/usr/local/gcc-15.1/include/c++/15/bits/regex.tcc:56:16: error: ‘std::__cxx11::basic_regex::_AutomatonPtr std::__cxx11::basic_regex::_M_automaton’ is private within this context
56 | if (__re._M_automaton == nullptr)
| ~~~~~^~~~~~~~~~~~
/usr/local/gcc-15.1/include/c++/15/bits/regex.h:848:25: note: declared private here
848 | _AutomatonPtr _M_automaton;
< /code>
Мой компилятор - GCC 15.1, Cmake 4.0.3. Вот воспроизведение этого примера на Godbolt. Если вы скомпилируете один и тот же пример в Clang, нет проблем. < /P>
Есть ли быстрое решение для этого? Знает ли GCC об этой проблеме?

Подробнее здесь: https://stackoverflow.com/questions/797 ... rom-module
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»