std::variant<std::string, int64_t, double, bool> m_value { std::string("") }; 改成c++ 14 或者11的写法
时间: 2024-04-15 13:27:19 浏览: 228
在C++14和C++11中,你可以使用std::make_variant_over模板函数来简化std::variant的声明。下面是将你提供的代码改写为C++14和C++11的写法:
C++14写法:
```cpp
#include <iostream>
#include <string>
#include <variant>
int main() {
std::variant<std::string, int64_t, double, bool> m_value{std::in_place_type<std::string>, ""};
// 示例用法
if (std::holds_alternative<std::string>(m_value)) {
std::string strValue = std::get<std::string>(m_value);
std::cout << "String value: " << strValue << std::endl;
}
return 0;
}
```
C++11写法:
```cpp
#include <iostream>
#include <string>
#include <variant>
int main() {
typedef std::variant<std::string, int64_t, double, bool> Variant;
Variant m_value = Variant(std::in_place_type<std::string>, "");
// 示例用法
if (std::holds_alternative<std::string>(m_value)) {
std::string strValue = std::get<std::string>(m_value);
std::cout << "String value: " << strValue << std::endl;
}
return 0;
}
```
注意,在C++14中,我们使用std::in_place_type来指定std::variant的类型,并在构造函数中提供初始值。而在C++11中,我们需要使用typedef来定义std::variant的类型,并在构造时使用相应的类型构造函数。
希望这能满足你的需求!如果还有其他问题,请随时提问。
阅读全文