c++ - 继承特化的模板参数推导
问题描述
考虑这段代码:
#include <type_traits>
template < typename > struct BB { };
template < > struct BB<float> : BB<int> { };
struct DD : BB<float> { };
template < typename... Args >
void ff(BB<Args...>) { }
int main()
{
ff(BB<float>{});
ff(DD{}); // FAILS! 'BB<Args ...>' is an ambiguous base class of 'DD'
return 0;
}
的调用ff(DD{})
无法编译,因为gcc-8.3
不想从BB<float>
和BB<int>
(clang
做同样的事情) 中选择一个。但是BB<float>
isa BB<int>
,那为什么BB<float>
就不能被选中呢?!
ff
问题是:这是否符合标准,在定义或BB
帮助gcc-8.3
选择时是否有解决方法BB<float>
?
解决方案
推荐阅读
- c# - System.Data.SqlClient.SqlException: 'Incorrect syntax near the keyword 'Transaction'
- css - Youtube scroll bar styling
- r - R: unexpected natural sorting by gtools mixedsort
- javascript - Clearing files from clipboardData - window:paste
- android - 如何显示数据,显示加载屏幕,或报告基于错误的状态
在 Android Studio Compose 官方示例项目中? - autodesk-forge - 无法使用 forge api/app 从 Autodesk Construction Cloud 获取表单数据
- go - 如何使用通道实现功能
- jestjs - 测试开始运行后无法添加挂钩。钩子必须同步定义
- activemq - ActiveMQ 5.15.9 - 当 producerFlowControl 为 false 且未设置 Systemusage 时将存储限制为 100 GB
- git - 如何将存储库克隆到本地机器上?