Örnek
Elimizde şöyle bir kod olsun
Elimizde şöyle bir kod olsun
template<typename Tag>
struct contraband_ {
using type = typename Tag::type;
inline static type ptr;
};
template<typename Tag>
inline auto const contraband = contraband_<Tag>::ptr;
template<typename Tag, typename Tag::type ptr_>
class steal : contraband_<Tag> {
static inline const char filler = [] {
steal::contraband_::ptr = ptr_;
return '\0';
}();
};
Şöyle yaparızclass foo {
int x = 3;
};
struct x_tag { using type = int foo::*; };
template class steal<x_tag, &foo::x>;
int main()
{
foo f;
// return f.x; ill-formed! Private!
return f.*contraband<x_tag>; // Okay!
}
Hiç yorum yok:
Yorum Gönder