我知道这是一个坏习惯,但我想知道一些解决方法或hack这个问题。 我有这样一个类:从std :: vector获取布尔引用<bool>
template <class T>
class A : std::vector<T> {
T& operator()(int index) { // returns a _reference_ to an object
return this->operator[](index);
}
};
这是可以做到这样的事情:
A<int> a{1,2,3,4};
a(3) = 10;
,但是它停止,如果有人使用布尔作为模板参数
A<bool> a{true, false, true};
std::cout << a(0) << std::endl; // not possible
if (a(1)) { /* something */ } // not possible
工作
std::vector<bool>
是矢量(http://www.cplusplus.com/reference/vector/vector-bool/),它不允许这样的事情的专业版本。
有没有办法如何从std :: Vector获取布尔变量的引用?还是有其他解决方案?
它会产生编译错误吗?还是它编译好,但不能以某种方式工作? – wallyk 2014-09-10 15:58:19
您可以为不使用'std :: vector'的'A '提供专业化。 –
juanchopanza
2014-09-10 16:02:12