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;
}
例。