我最近一直在尝试 C++17 的std::variant和std::visit,我发现它非常强大。我特别喜欢在多个变体对象上创建访问者模式的能力。这是我的意思的一个例子:
std::variant<int, float, char> v1 { 's' };
std::variant<int, float, char> v2 { 10 };
std::visit(overloaded{
[](int a, int b) { },
[](int a, float b) { },
[](int a, char b) { },
[](float a, int b) { },
[](auto a, auto b) { }, // << default!
}, v1, v2);
Run Code Online (Sandbox Code Playgroud)
有关完整详细信息,请参阅https://www.bfilipek.com/2018/09/visit-variants.html。鉴于此,我想知道是否可以基于多态类型而不是变体对象编写类似的代码。
想一想我们使用动态多态和父对象来编写通用接口的场景。然后我们要实现依赖于几种多态类型的某个功能,即像
void fun(IFoo* ptr_foo, IBar* ptr_bar) {
{
Foo1* child_foo = dynamic_cast<Foo1*>(ptr_foo);
Bar1* child_bar = dynamic_cast<Bar1*>(ptr_bar);
if(child_foo && child_bar) …Run Code Online (Sandbox Code Playgroud) 是否可以更改 VSCode 中搜索栏的宽度?即在使用“转到文件...”(workbench.action.quickOpen)或切换最近的文件(workbench.action.openNextRecentlyUsedEditorInGroup)时打开的典型下拉选择菜单。
我目前这样做的动机是能够完全看到被截断的长文件名。