Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- template<typename T>
- struct is_ptr
- {
- static const bool value = false;
- };
- template<typename T>
- struct is_ptr<T*>
- {
- static const bool value = true;
- };
- template<typename T>
- struct remove_ptr
- {
- //typedef T value_type;
- T value_type;
- };
- template<typename T>
- struct remove_ptr<T*>
- {
- typedef T value_type;
- //T value_type;
- };
- struct STATIC_ASSERT{
- STATIC_ASSERT(bool val): v(val){
- }
- bool v;
- };
- std::ostream& operator<< (std::ostream& s, const STATIC_ASSERT& a){
- return s << a.v;
- }
- struct A { };
- int main()
- {
- std::cout <<STATIC_ASSERT(is_ptr<A*>::value); // OK
- std::cout <<STATIC_ASSERT(is_ptr<remove_ptr<A*>::value_type*>::value) ;//OK
- std::cout <<STATIC_ASSERT(is_ptr<remove_ptr<A*>::value_type>::value); //BĹ‚Ä…d, bo value_type to niewskaĹşnik tylko obiekt (?)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement