小编Ard*_*niz的帖子

变体:没有匹配的函数来调用“get”

这是我的代码:

#include <iostream>
#include <variant>
#include <vector>

class A {
public:
    virtual void Foo() = 0;    
};

class B : public A {
public:
    void Foo() override {
        std::cout << "B::Foo()" << std::endl;   
    }
};

class C :public A {
public:
    void Foo() override {
        std::cout << "C::Foo()" << std::endl;   
    }
};

template<typename... Args>
class D {
public:
    template<typename T>
    void Foo() {
        m_variant = T{};
    }

    void Bar() {
      std::get<m_variant.index()>(m_variant).Foo();
    }

private:
    std::variant<std::monostate, Args...> m_variant;
};

int main() { …
Run Code Online (Sandbox Code Playgroud)

c++ templates variant variadic-templates c++17

3
推荐指数
1
解决办法
3106
查看次数

标签 统计

c++ ×1

c++17 ×1

templates ×1

variadic-templates ×1

variant ×1