【发布时间】:2013-11-03 19:20:29
【问题描述】:
我的类有一个重载的operator&,如果参数是指针,我会在其中执行静态断言。
class test {
public:
template<typename T>
friend inline test& operator&(test& so, T const& t) {
std::cout << "is_pointer : " << std::is_pointer<T>::value << std::endl;
static_assert(std::is_pointer<T>::value, "no operator overloaded for pointers.");
// some stuff
}
};
如果我使用这个运算符,即使类型肯定不是指针,我也总是会得到断言。 std::cout << "is_pointer : " << std::is_pointer<T>::value << std::endl; 正在打印一个零...
int main() {
test t;
t & 123;
return 0;
}
【问题讨论】:
-
打印布尔值的快速提示:
std::cout << std::boolalpha;,然后再执行。
标签: c++ c++11 static-assert