小编joh*_*ull的帖子

为什么这样做:C++最后一个语句作为表达式的结果

我在驱动程序实现中发现了奇怪的宏,我无法向自己解释.简化示例是:

cout << ({int i=0; while(i<10) {++i;} i;}) << endl;
Run Code Online (Sandbox Code Playgroud)

它将输出10.

但为什么这种表达会变成一个价值呢?它似乎适用于C和C++.

有人可以解释一下吗?指向关键字和参考将是伟大的.

c++

11
推荐指数
1
解决办法
203
查看次数

带有模板函数错误的C++条件模板类型

我有这样的代码

    namespace bg = boost::geometry;
    typedef typename std::conditional<highDimension,
                                    typename bg::model::point<double, 6, bg::cs::cartesian>,
                                    typename bg::model::point<double, 5, bg::cs::cartesian>>::type point;
    ..........
    point p;                    
    p.set<0>(0);
    p.set<1>(0);
    p.set<2>(0);
    ..........
Run Code Online (Sandbox Code Playgroud)

GCC向我展示了很多错误,例如"错误:类型'的无效操作数'和'int'到二进制'运算符<'p.set <1>(col.a());" 所以它只是试图'比较' p.set1

boost类实际上有模板函数集,但编译器不使用它作为函数.

如果我直接从boost类型生成typedef,就像typedef bg::model::point<double, 5, bg::cs::cartesian> point;一切正常.

我只想根据模板参数选择不同的尺寸大小highDimension.但现在我不知道如何强迫GCC了解我:)

c++ gcc templates boost boost-geometry

2
推荐指数
1
解决办法
171
查看次数

标签 统计

c++ ×2

boost ×1

boost-geometry ×1

gcc ×1

templates ×1