use*_*229 4 c++ boost optional
有没有办法默认初始化boost :: optional变量而不提供T的名字?
struct MyStruct
{
int a;
};
int main(){
boost::optional<MyStruct> opt;
opt = MyStruct(); // <--
}
Run Code Online (Sandbox Code Playgroud)
我的目标是在我只想默认初始化opt时省略提供结构名称.
如果您的编译器支持可变参数模板,并且您使用的是Boost 1.56或更高版本,请使用emplace()不带参数:
opt.emplace();
Run Code Online (Sandbox Code Playgroud)
如果不满足任一条件(没有可变参数模板的编译器或较旧的Boost),请使用in_place不带参数的工厂:
opt = boost::in_place();
Run Code Online (Sandbox Code Playgroud)
在Boost 1.59中,emplace()即使在C++ 03编译器中也可以调用0参数.
| 归档时间: |
|
| 查看次数: |
2163 次 |
| 最近记录: |