小编Cal*_*ski的帖子

使用Clang中的静态constexpr奇怪地重现模板模式(CRTP)

请考虑下面的简单示例:

#include <iostream>

template <typename T>
class Base
{
public:
    static constexpr int y = T::x;
};

class Derived : public Base<Derived>
{
public:
    static constexpr int x = 5;
};


int main()
{
    std::cout << Derived::y << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

在g ++中,这可以很好地编译5并按预期打印.但是,在Clang中,它无法编译错误no member named 'x' in 'Derived'.据我所知,这是正确的代码.我正在做什么有什么问题,如果没有,有没有办法让这个工作在Clang?

c++ templates clang crtp c++11

9
推荐指数
1
解决办法
447
查看次数

如何使用向量<bool>的提取运算符(>>)?

在一个示例中vector<int> someVector,istringstream someStringStream你可以这样做:

for (int i=0; i < someVector.size(); i++) {
  someStringStream >> someVector[i];
}
Run Code Online (Sandbox Code Playgroud)

我知道这vector<bool>是一个有效的实现,并operator[]返回一个引用对象.对于这段代码,我应该使用索引而不是迭代器,主要是为了提高可读性.目前,我正在使用这个:

for (int i=0; i < someVector.size(); i++) {
  bool temp;
  someStringStream >> temp;
  someVector[i] = temp;
}
Run Code Online (Sandbox Code Playgroud)

是否有更直接的方式来实现这一点?

c++ vector extraction-operator c++11

7
推荐指数
2
解决办法
265
查看次数

标签 统计

c++ ×2

c++11 ×2

clang ×1

crtp ×1

extraction-operator ×1

templates ×1

vector ×1