带有const的模板专业化:gcc上出现“模棱两可的模板实例化”错误,但没有clang

时间:2019-05-27 22:30:47

标签: c++ gcc clang c++17 template-specialization

下面的代码在clang上编译(我尝试过7和8),但是在gcc(7、8或9)上编译,都使用generator.withTypeMappers。使用gcc,我会收到一个--std=c++17错误,如您在此处看到的:https://godbolt.org/z/69Bomq

我可以通过取消注释ambiguous template instantiation来为gcc修复它。如果我将#define FIX_GCC的专业领域中的first_type<C>first_type<const C>更改为Cconst C,它也会编译,但是如果有一些{{ 1}}来缩小那里的专业化范围。

这里的gcc错误吗?还是我做错了c碰碰的声音?

更新:删除专业化中的一层模板,即traits<Map<...>>,即使使用模板别名enable_if_t<...>,也使GCC感到满意,请参见https://godbolt.org/z/90kGEP

Map
first_type

0 个答案:

没有答案