zoukankan      html  css  js  c++  java
  • 限定类的<<操作符(函数模板)输入的为整数类型

    http://topic.csdn.net/u/20081017/22/43aaada5-eb9f-4614-bba8-c185d0dfa410.html
    需要实现如下功能:
    class A
    {
    public:
        template <typename T>
        A & operator < <(T rhs)
        {
          //some integral operation
        }
    };

    int main(void)
    {
        A a;
        a < < 123;    //Ok
        a < < 123.0/*或其他非整数类型*/;  //编译失败,且错误信息指向本行
    }
    附加一个:
    5. 使用BOOST_STATIC_ASSERT, 如下:
    class A
    {
    public:
        template <typename T>
        A & operator < <(T rhs)
        {
            BOOST_STATIC_ASSERT((boost::is_integral <T>::value));
          //some integral operation
        }
    };

    int main(void)
    {
        A a;
        a < < 123;    //Ok
        a < < 123.0/*或其他非整数类型*/;  //编译失败,但是错误信息指向BOOST_STATIC_ASSERT一行
    }

    如果没有好办法,只有用这种了
    模板元编程的知识不是靠到boost目录里找的。
    是要看过《Modern C++ design》和《C++模板元编程》2本书掌握出来的。
    class A
    {
    public:
        template <typename T>
        typename boost::enable_if <boost::is_integral <T>, A/*T*/>::type & operator < <(T rhs)
        {
        }
    };
  • 相关阅读:
    vue chrome调试工具开启
    mac显示隐藏文件
    mac网络变慢?
    57-文件处理小结
    56-文件修改的两种方式
    54-with管理文件操作上下文
    53-文件的三种打开方式
    51-基本文件操作
    50-Python2和3字符编码的区别
    49-字符编码
  • 原文地址:https://www.cnblogs.com/cutepig/p/1400151.html
Copyright © 2011-2022 走看看