我正在观看这个特别的https://www.youtube.com/watch?v=NPWQ7xKfIHQ&t=836s CppCon关于优化模板编译时间的讨论。他在这里给出了以下例子
template <typename Type, std::enable_if_t = is_list<Type>>
struct pm
{
static auto read(Type& t) {....}
static auto write(Type const& t) {...}
};
并说由于enable_if_t
,这将具有线性模板重载解决时间复杂度。我不太明白在这种情况下如何发生模板重载解析。 AFAIK编译器将首先在所有已定义的模板中替换类型T
。这意味着要考虑两种可能性。一个有列表,一个没有列表。之后,它有一个特定的模板实例,它正在寻找,应该只是O(1)查找。你能否纠正我在思考过程中缺少的东西?