使用名称空间和using指令不适用于std :: enable_if_t

詹姆士

当我尝试使用MSCL 19编译以下代码时,就可以了。但是,当我尝试使用g ++ 6.2.0和clang 3.9.0时,出现类似以下错误expected nested-name-specifier class=typename

#include<type_traits>
using namespace std;
template<class T,class=typename enable_if_t<
    is_signed<T>::value&&is_integral<T>::value&&(sizeof(T)>1)>>
    void f(T i) {}
int main() {
    f(1);
}

添加using std::enable_if_t将产生相同的结果。

#include<type_traits>
using namespace std;
using std::enable_if_t;
template<class T,class=typename enable_if_t<
    is_signed<T>::value&&is_integral<T>::value&&(sizeof(T)>1)>>
void f(T i) {
}
int main(){
    f(1);
}

可以通过在前面enable_if_t加上前缀来解决此问题std::

#include<type_traits>
using namespace std;
template<class T,class=typename std::enable_if_t<
    is_signed<T>::value&&is_integral<T>::value&&(sizeof(T)>1)>>
void f(T i) {
}
int main(){
    f(1);
}

为什么using namespace stdusing std::enable_if_t都无效std::enable_if_t

dvk

它尝试告诉您的是何时看到typename其下一个嵌套类型说明符。并且enable_if_t不带任何嵌套地使用(no ::)。删除typename使其可以与gcc一起使用。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么@Autowired不适用于通用类型T?

realm.objects()。filter不适用于Resuts <T>

`pip install -t`不适用于名称空间包

C ++-通过enable_if_t推导参数包(可变模板)构造函数和复制构造函数

C ++-14使用enable_if_t选择以整数类型为模板的类的成员函数

noexcept运算符和enable_if_t:它们可以一起工作吗?

为什么SFINAE与std :: enable_if_t不兼容?

错误:尚未声明“ std :: enable_if_t”

如何为SFINAE使用std :: enable_if_t和std :: is_base_of检查编译时继承?

std :: enable_if_t将字符串与非字符串函数参数分开

C ++ enable_if_t SFINAE

template <class = enable_if_t <... >>是做什么的?

成员函数中的C ++ SFINAE enable_if_t,如何消除歧义?

Mocha测试不适用于Typescript名称空间和三斜杠导入

非类型模板参数和std :: enable_if_t

打字稿:Omit <T,K>不适用于枚举

如何定义基于enable_if_t的重载

使用“ std :: enable_if_t”“已定义功能模板”

如何在完美转发中使用std :: enable_if_t?

std :: enable_if_t = 0是什么意思

std :: enable_if和std :: enable_if_t有什么区别?

具有std :: enable_if_t的模板类,静态const成员初始化

错误:名称空间“ std”中没有名为“ enable_if_t”的模板;你是说'enable_if'吗?

网络名称空间不适用于VPN

IEqualityComparer <T>不适用于List <T> .Distinct()方法

何时评估enable_if_t表达式?

Apipie文档不适用于嵌套名称空间

通过std :: enable_if_t传递被调用方法的返回值

如何使用 `std::enable_if_t` 使类模板复制/移动可构造/可分配