![]() |
1
4
你的方法最大的问题是你不能在这里做sfinae——sfinae只适用于参数类型和返回类型。 但是,在标准中的所有sfinae情况中,没有一个适用于您的情况。他们是
这可能就是为什么在Boost文档中有:
|
![]() |
2
2
这也不适用于VS2008,但我怀疑你也知道。sfinae用于推导模板参数的模板参数;即使您可以创建与另一个类型不兼容的类型(即联合不能使用非pod),您也不能真正推断出显示类型的构造函数的类型。
事实上,VS2008使用编译器对特性的支持来实现
|
![]() |
3
1
我不确定你在这里的方式,因为
你可能还想看看 Boost.Enable_i f为您做您的sfinae——除非您试图实现自己的库或出于某种原因。 |
![]() |
user1683586 · 使用复制构造函数启用_if 7 年前 |
![]() |
ssb · C++SFINAE解析顺序 7 年前 |
![]() |
Viatorus · SFINAE:函数模板优化 8 年前 |
![]() |
Ammar Husain · 元编程的C++STL功能等价物 9 年前 |
![]() |
KentH · 使用std::result_of的意外SFINAE失败 10 年前 |