小编ddd*_*dd4的帖子

使用 constexpr bool 测试的 enable_if 不起作用

我有一个数学函数,我希望能够接受双精度数或双精度数数组/向量/容器,并且行为略有不同。

\n\n

我正在尝试使用 SFINAE 和类型特征来选择正确的函数。

\n\n

这是一个最小的例子:

\n\n
#include <iostream>\n#include <vector>\n#include <type_traits>\n\ntemplate <typename T>\nconstexpr bool Iscontainer()\n{\n    if constexpr (std::is_class<T>::value && std::is_arithmetic<typename T::value_type>::value) {\n        return true;\n    }\n    return false;\n}\n\n// Function 1 (double):\ntemplate <typename T>\ntypename std::enable_if<std::is_arithmetic<T>::value>::type g(T const & t)\n{\n    std::cout << "this is for a double" << t << std::endl;\n}\n\n// Function 2 (vec), version 1:\ntemplate <typename T>\ntypename std::enable_if<IsContainer<T>()>::type g(T const & t)\n{\n    std::cout << "this is for a container" << t[0] << std::endl;\n}\n\nint main()\n{\n    std::vector<double> v {1, 2};\n    std::array<double, 2> a …
Run Code Online (Sandbox Code Playgroud)

c++ templates enable-if constexpr c++11

5
推荐指数
1
解决办法
2734
查看次数

标签 统计

c++ ×1

c++11 ×1

constexpr ×1

enable-if ×1

templates ×1