如何检查模板类方法的返回类型?

亚历克斯

我尝试检查作为模板参数给出的类的方法 getGG() 的 Class2 返回值类型,但我的代码无法编译。如何正确操作?

template <class T, class U>
struct hasProperMethodReturnValueType {
    static constexpr bool value = std::is_same<T, std::decltype(U.getGG())>;
};

template<class P> class Class1 {
private:
    P gg;
public: 
    Class1(P a) : gg(a) {} 
    P getGG() {
        return gg;
    }   
};

template<class A, class P> class Class3 {
private:
    P gg;
    A dd;
public: 
    Class3(P a, A r) : gg(a), dd(r) {} 
    P getGG() {
        return gg;
    }   
};

template<class G, class R> class Class2 {
    static_assert(hasProperMethodReturnValueType<G, R>::value, "Not same type");
private:
    R cc;
public:
    Class2(R r) : cc(r) {};
};

int main() {
    auto obj  = Class2<int, Class1<int> >(Class1<int>(3));
    auto obj2  = Class2<int, Class3<float, int> >(Class3<float, int>(0, 1.1));
    return 0;
}

编译错误:

error: template argument 2 is invalid
  static constexpr bool value = std::is_same<T, std::decltype(U.getGG())>;
梦堂

使用std::declval.

template <class T, class U>
struct hasProperMethodReturnValueType
  : std::is_same<T, decltype(std::declval<U>().getGG())>
{};

https://wandbox.org/permlink/iWUCOyssN3sVo2yH

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从模板化类方法返回依赖类型?

来自分类Dev

检查模板化方法的返回类型

来自分类Dev

如何获取模板参数方法的返回类型?

来自分类Dev

返回对象类型的类,但如何返回和检查 null

来自分类Dev

如何使用带模板的类成员的尾随返回类型

来自分类Dev

Java模板如何返回带有模板类型的函数参数类类型实例

来自分类Dev

如何检查嵌套模板的类型?

来自分类Dev

如何检查嵌套模板的类型?

来自分类Dev

类方法的返回类型

来自分类Dev

如何根据类方法的返回类型声明参数类型?

来自分类Dev

自动,模板?如何构造返回不同数据类型的方法

来自分类Dev

类模板和参考返回类型

来自分类Dev

模板类的返回类型?这是怎么写的?

来自分类Dev

类模板和参考返回类型

来自分类Dev

模板参数类的函数调用的返回类型

来自分类Dev

C ++类模板作为函数返回类型

来自分类Dev

如何检查Func <...>类型的变量是否为特定的类方法

来自分类Dev

PHPUnit检查方法返回类型

来自分类Dev

如何获取模板的类型(例如模板<typename T>),以及如何检查T是int还是float还是一个类

来自分类Dev

如何检查两种类型是否来自同一模板类

来自分类Dev

如何检查模板类型是否为其他模板类型?

来自分类Dev

如何指定抽象类方法的返回类型

来自分类Dev

如何运行从通用类返回“类型”对象的方法

来自分类Dev

如何指定抽象类方法的返回类型

来自分类Dev

如何确定从类模板继承的模板参数的基础模板类型?

来自分类Dev

如何从新的operator +(模板类)返回具有转换类型的对象

来自分类Dev

如何获得传递给模板化函数或类的函数的返回类型?

来自分类Dev

如何检查模板中发送的参数类型?

来自分类Dev

C ++中模板方法的返回类型

Related 相关文章

  1. 1

    如何从模板化类方法返回依赖类型?

  2. 2

    检查模板化方法的返回类型

  3. 3

    如何获取模板参数方法的返回类型?

  4. 4

    返回对象类型的类,但如何返回和检查 null

  5. 5

    如何使用带模板的类成员的尾随返回类型

  6. 6

    Java模板如何返回带有模板类型的函数参数类类型实例

  7. 7

    如何检查嵌套模板的类型?

  8. 8

    如何检查嵌套模板的类型?

  9. 9

    类方法的返回类型

  10. 10

    如何根据类方法的返回类型声明参数类型?

  11. 11

    自动,模板?如何构造返回不同数据类型的方法

  12. 12

    类模板和参考返回类型

  13. 13

    模板类的返回类型?这是怎么写的?

  14. 14

    类模板和参考返回类型

  15. 15

    模板参数类的函数调用的返回类型

  16. 16

    C ++类模板作为函数返回类型

  17. 17

    如何检查Func <...>类型的变量是否为特定的类方法

  18. 18

    PHPUnit检查方法返回类型

  19. 19

    如何获取模板的类型(例如模板<typename T>),以及如何检查T是int还是float还是一个类

  20. 20

    如何检查两种类型是否来自同一模板类

  21. 21

    如何检查模板类型是否为其他模板类型?

  22. 22

    如何指定抽象类方法的返回类型

  23. 23

    如何运行从通用类返回“类型”对象的方法

  24. 24

    如何指定抽象类方法的返回类型

  25. 25

    如何确定从类模板继承的模板参数的基础模板类型?

  26. 26

    如何从新的operator +(模板类)返回具有转换类型的对象

  27. 27

    如何获得传递给模板化函数或类的函数的返回类型?

  28. 28

    如何检查模板中发送的参数类型?

  29. 29

    C ++中模板方法的返回类型

热门标签

归档