我目前正在学习 OpenGL,并在编写着色器抽象类时选择std::optional用于错误处理。现在为了防止意外的双重释放,我将删除复制构造函数
// Shader.h
Shader(const Shader&) = delete;
Shader& operator=(const Shader&) = delete;
Run Code Online (Sandbox Code Playgroud)
但回来时
// Shader.cpp
return std::make_optional<Shader>(Shader(id));
Run Code Online (Sandbox Code Playgroud)
在静态函数中fromSrc它给了我一个编译错误
Error (active) E0304 no instance of overloaded function "std::make_optional" matches the argument list LearnOpengl *\LearnOpengl\LearnOpengl\src\util\Shader.cpp 90
Run Code Online (Sandbox Code Playgroud)
我正在使用 Visual Studio 2022 (MSVC v143) 和 c++17
编辑:我被告知要实现移动构造函数,这是一个很好的实现吗?
Error (active) E0304 no instance of overloaded function "std::make_optional" matches the argument list LearnOpengl *\LearnOpengl\LearnOpengl\src\util\Shader.cpp 90
Run Code Online (Sandbox Code Playgroud)