为什么static_assert
下面会成功?我只是让<<
操作员成为朋友,但我还没有在任何地方创建它。
struct foo {
friend std::ostream &operator<<(std::ostream &stream, const foo &f);
};
template<typename T>
struct bar {
//succeeds:
static_assert(boost::has_left_shift<std::ostream,T>::value, "failure");
};
int main(int,char**) {
bar<foo> b;
return 0;
}