我正在编写一个继承自std::vector
(*)的类,我希望能够以所有可用于其基础的方式构造它,所以我使用
#include <vector>
struct B : public std::vector<double>
{
using std::vector<double>::vector;
};
使用g ++和clang进行编译很好,但是英特尔编译器给了我(带有标记-std=c++11
)
错误:函数模板“B :: B(_ForwardIterator,_ForwardIterator,const std :: __ 1 :: allocator&lt; double&gt;&amp;)”已经继承自“std :: __ 1 :: vector&lt; double,std :: __ 1 ::分配器&LT;双&GT;&gt;“中
在using
指令。
任何想法为什么会发生这种情况和/或如何解决它?
更新:这似乎取决于操作系统,在Linux和Windows平台上运行良好但在OS X上失败。在英特尔论坛上正在进行讨论。
(*)我不想使用多态性,如果不直接相关,请避免“这是不好的做法”答案 - 实际上有很多帖子同意这是可以接受的。