相关疑难解决方法(0)

为什么我需要在g ++中使用typedef typename而不是VS?

自从海湾合作委员会抓住我这个问题已经有一段时间了,但它刚刚发生在今天.但是我从来没有理解为什么GCC在模板中需要typedef typename,而VS和我猜ICC没有.typedef typename是一个"bug"还是一个严格的标准,还是留给编译器编写者的东西?

对于那些不知道我的意思的人来说,这是一个样本:

template<typename KEY, typename VALUE>
bool find(const std::map<KEY,VALUE>& container, const KEY& key)
{
    std::map<KEY,VALUE>::const_iterator iter = container.find(key);
    return iter!=container.end();
}
Run Code Online (Sandbox Code Playgroud)

上面的代码在VS(可能在ICC中)编译,但在GCC中失败,因为它想要这样:

template<typename KEY, typename VALUE>
bool find(const std::map<KEY,VALUE>& container, const KEY& key)
{
    typedef typename std::map<KEY,VALUE>::const_iterator iterator; //typedef typename
    iterator iter = container.find(key);
    return iter!=container.end();
}
Run Code Online (Sandbox Code Playgroud)

注意:这不是我正在使用的实际功能,而只是一些愚蠢的东西来证明这个问题.

c++ typedef g++ typename

50
推荐指数
2
解决办法
3万
查看次数

std :: vector to boost :: python :: list

我在c ++中有一个从python调用的方法,需要返回一个python列表对象.

我已经创建了这个方法,它附加到一个公开的类,现在可以从python中调用...(它返回void).

所以问题是,如何从这里创建一个python列表:

std::vector<std::string> results;

我真的不明白构造函数如何从这个文档中工作:

http://www.boost.org/doc/libs/1_37_0/libs/python/doc/v2/list.html

另外......我真的不想返回那种包装的矢量......我只是想用矢量中的字符串值创建一个新的python列表.

我很抱歉,如果这是重复...我找到了很多矢量问题的列表,但我找不到任何关于创建一个新的python列表.

我可以扩展这个问题,以包括一些其他问题,如:

从a创建一个新的python字典std::map<std::string, std::string>,依此类推.

c++ boost-python

40
推荐指数
4
解决办法
3万
查看次数

标签 统计

c++ ×2

boost-python ×1

g++ ×1

typedef ×1

typename ×1