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)
        {
        }
    };
  • 相关阅读:
    Python requests“Max retries exceeded with url” error
    命令行链接mongo、redis、mysql
    python 删除字典某个key(键)及对应值
    python标准模块(二)
    python标准模块(一)
    格式化输出
    LeetCode----1. Two Sum
    文件操作(初阶)
    python函数基础
    python3内置函数
  • 原文地址:https://www.cnblogs.com/cutepig/p/1400151.html
Copyright © 2011-2022 走看看