小编KoK*_*oru的帖子

如何转发std :: initializer_list <T>?

我试图转发std::initializer_list但是

no known conversion from 'std::initializer_list<A>' to 'std::initializer_list<B>'
Run Code Online (Sandbox Code Playgroud)

这是测试代码

#include <iostream>

class B {
};

class A: public B {
};

class not_working {
    private:
    void fun(std::initializer_list<B> p) {
    }
    public:
    template<typename T>
    not_working(std::initializer_list<T> args) {
        fun(args);
    }
};

class working {
    private:
    void fun(std::initializer_list<B> p) {
    }
    public:
    working(std::initializer_list<B> args) {
        fun(args);
    }
};

int main(){    
    working{A{}, A{}};
    //not_working{A{}, A{}};
}
Run Code Online (Sandbox Code Playgroud)

如何在std::initializer_list
没有明确演员的情况下转发not_working{(B)A{}, (B)A{}};

为什么这对我来说是个问题?

我有一个代理类,它将构造函数参数转发给一个类.像这样的东西:

 template<typename T>
 class proxy {
    T real;
    template<typename …
Run Code Online (Sandbox Code Playgroud)

c++ initializer-list c++11

7
推荐指数
1
解决办法
1129
查看次数

标签 统计

c++ ×1

c++11 ×1

initializer-list ×1