gpt4 book ai didi

c++ - Stroustrup 的 Can_Copy 模板如何工作?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:44 26 4
gpt4 key购买 nike

Stroustrup 提供了一个 Can_copy template .它是如何工作的?

template<class T1, class T2> struct Can_copy {
static void constraints(T1 a, T2 b) { T2 c = a; b = a; }
Can_copy() { void(*p)(T1,T2) = constraints; }
};

特别是,为什么他需要行 void(*p)(T1,T2) = constraints; 而不是空构造函数?是否允许编译器仅生成特定模板实例用作优化的函数?

最佳答案

这是因为生成的代码中不存在模板中未使用的成员函数,因此要检查约束,您必须在某处显式调用 constraints()

通过这种方式生成了 constraints() 的代码,因此在编译时会检查约束(这就是 Can_copy 的目的)。

关于c++ - Stroustrup 的 Can_Copy 模板如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5072554/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com