C++为什么会报错 [Error] cannot与can not区别 convert '<brace-enclosed initializer list>' to 'char'


 

下载百度知道APP抢鲜体验

使用百喥知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

以下是代码的简化版本:

我得到鉯下运行时错误:

 
正如assert-message所建议的那样,我阅读了所需的.还有关于的小节.似乎我有两个选择:

这两个尝试都不编译(使用GCC 4.8.3和Clang 3.5进行测试),因为编译器無法正确转换初始化程序列表.

 

>为什么在更改std :: vector的分配器时,初始化器列表不可用
这是因为对齐吗?
>我可以以某种方式对齐初始化列表吗
>为什么专业化版本失败?
>这些缺乏初始化器列表功能

)之后,似乎问题起因于这个头文件中std :: vector的部分模板专门化.一旦您使用Eigen :: aligned_allocator作为分配器,这个部分模板专门化将替换STL向量.而这种专业化似乎缺乏C11的特点.

详细说明除了更换分配器之外,这种专业化是必要的:
在C 11之前,std :: vector的可以通过值附加一个参數来初始化新创建的元素. 通过值传递参数将丢弃任何对齐修饰符,并且不能与固定大小的可矢量化特征对象一起使用(请参阅SIMD).

我要回帖

更多关于 cannot convert 的文章

 

随机推荐