SFINAE和衰变不能一起使用。为什么?

主神

我只是在学习C ++中的元编程。我想基于传递的类型使opengl类型id的自动检测器。我的代码通过了decltype(array),成为float*如果我使用GLType<float>::type它,效果很好,但GLType<float*>::type失败并显示“未知成员类型”错误。我想std::is_same_v<std::decay_t<T>, float>>将计算为true_type在任何float*, float[], const float, etc..的说明这里

template <typename T, typename = void>
struct GLType {};

template <typename T>
struct GLType<T, std::enable_if_t<std::is_same_v<std::decay_t<T>, float>>> {
    const static constexpr int type = GL_FLOAT;
};

template <typename T>
struct GLType<T, std::enable_if_t<std::is_same_v<std::decay_t<T>, double>>> {
    const static constexpr int type = GL_DOUBLE;
};
慈济

std::decay_t不会从类型中删除指针。如果要这样做,则需要使用std::remove_pointer_t,例如:

template <typename T>
struct GLType<T, std::enable_if_t<std::is_same_v<std::remove_pointer_t<std::decay_t<T>>, float>>> {
                                             //  ^^^^^^^^^^^^^^^^^^^^^  add this   
 const static constexpr int type = GL_FLOAT;
};

和其他模板类似。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么MockMVC和Mockito不能一起使用?

来自分类Dev

为什么filter和rowSums不能一起使用?

来自分类Dev

为什么HMR和chunkhash不能一起使用?

来自分类Dev

C ++ 17,为什么自动非类型模板参数不能与SFINAE一起使用

来自分类Dev

为什么选择范围和弹出窗口不能在javascript中一起使用?

来自分类Dev

为什么不能将@PostConstruct和@Retryable一起使用?

来自分类Dev

为什么Bootstrap行和列不能与车把一起使用?

来自分类Dev

为什么inline-block和max-width不能一起使用?

来自分类Dev

为什么不能将字段与getField()和setField()一起使用?

来自分类Dev

为什么这个数组和 foreach 不能与 mysqli 一起使用?

来自分类Dev

LibreOffice为什么不能与HUD一起使用?

来自分类Dev

为什么模拟不能与AsyncTask一起使用?

来自分类Dev

为什么kubernetes不能直接与容器一起使用

来自分类Dev

为什么kubernetes不能直接与容器一起使用

来自分类Dev

为什么kubernetes不能直接与容器一起使用

来自分类Dev

LibreOffice为什么不能与HUD一起使用?

来自分类Dev

为什么childElementCount不能与jQuery一起使用?

来自分类Dev

为什么javascript“ this”不能与“ each”一起使用?

来自分类Dev

setuid为什么不能与mount一起使用?

来自分类Dev

为什么JQuery不能与CryptoJS一起使用?

来自分类Dev

为什么 grep 不能与 iostat 一起使用?

来自分类Dev

为什么 foreach 不能与 String 一起使用?

来自分类Dev

为什么Quickbooks可以与Ubuntu一起使用,而不能与Fedora一起使用?

来自分类Dev

为什么它可以与$ scope一起使用,但不能与`this`一起使用?

来自分类Dev

为什么此脚本不能与nohup一起使用,但是不能,不能呢?

来自分类Dev

为什么此脚本不能与nohup一起使用,但是不能,不能呢?

来自分类Dev

为什么AOP和DI很少一起使用

来自分类Dev

为什么不将向量和列表一起使用?

来自分类Dev

为什么 HHVM 和 NGINX 一起使用?

Related 相关文章

  1. 1

    为什么MockMVC和Mockito不能一起使用?

  2. 2

    为什么filter和rowSums不能一起使用?

  3. 3

    为什么HMR和chunkhash不能一起使用?

  4. 4

    C ++ 17,为什么自动非类型模板参数不能与SFINAE一起使用

  5. 5

    为什么选择范围和弹出窗口不能在javascript中一起使用?

  6. 6

    为什么不能将@PostConstruct和@Retryable一起使用?

  7. 7

    为什么Bootstrap行和列不能与车把一起使用?

  8. 8

    为什么inline-block和max-width不能一起使用?

  9. 9

    为什么不能将字段与getField()和setField()一起使用?

  10. 10

    为什么这个数组和 foreach 不能与 mysqli 一起使用?

  11. 11

    LibreOffice为什么不能与HUD一起使用?

  12. 12

    为什么模拟不能与AsyncTask一起使用?

  13. 13

    为什么kubernetes不能直接与容器一起使用

  14. 14

    为什么kubernetes不能直接与容器一起使用

  15. 15

    为什么kubernetes不能直接与容器一起使用

  16. 16

    LibreOffice为什么不能与HUD一起使用?

  17. 17

    为什么childElementCount不能与jQuery一起使用?

  18. 18

    为什么javascript“ this”不能与“ each”一起使用?

  19. 19

    setuid为什么不能与mount一起使用?

  20. 20

    为什么JQuery不能与CryptoJS一起使用?

  21. 21

    为什么 grep 不能与 iostat 一起使用?

  22. 22

    为什么 foreach 不能与 String 一起使用?

  23. 23

    为什么Quickbooks可以与Ubuntu一起使用,而不能与Fedora一起使用?

  24. 24

    为什么它可以与$ scope一起使用,但不能与`this`一起使用?

  25. 25

    为什么此脚本不能与nohup一起使用,但是不能,不能呢?

  26. 26

    为什么此脚本不能与nohup一起使用,但是不能,不能呢?

  27. 27

    为什么AOP和DI很少一起使用

  28. 28

    为什么不将向量和列表一起使用?

  29. 29

    为什么 HHVM 和 NGINX 一起使用?

热门标签

归档