Привет, что здесь не так?
#include <mutex>
#include <filesystem>
#include <iostream>
using namespace std;
void set_path(std::filesystem::path &path)
{
cerr << "tick2" << endl;
}
inline const std::filesystem::path &get_xdg_data_path()
{
static std::once_flag flag;
static std::filesystem::path path;
cerr << "tick1" << std::endl;
set_path(path);
//std::call_once(flag, set_path, path);
return path;
}
int main()
{
auto p = get_xdg_data_path();
std::cout << p << std::endl;
}
В общем, если вызвать set_path(path), то ок, если std::call_once(flag, set_path, path), то
pavlick /tmp $ ./a.out
tick1
terminate called after throwing an instance of 'std::system_error'
what(): Unknown error -1
call_once 11 стандарта, да и filesystem уже не девочка … . clang аналогично, правда там ведь у них своя стд либа есть -lc++, но хз, что-то у меня ее нет, в репах тоже.
ЗЫ: со стрингом все ок было (через call_oncce)