gpt4 book ai didi

C++ 在编译时检查类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:50:20 26 4
gpt4 key购买 nike

我正在阅读 Bjarne Stroustrup 的 C++ 常见问题解答,阅读有关类型参数的约束以及在编译时强制执行某些约束而不会出现荒谬的模板错误的方法,并遇到了这个示例:

 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;
}
};

但是,我不太确定这在编译时是如何计算的?为函数指针分配约束有什么用?这是某种隐式调用约束吗?

很抱歉,如果这是一个明显的问题,实际上只读了两天 C++,但有使用其他语言的经验。

最佳答案

像编译器一样思考。 “将约束分配给函数指针”强制代码生成,代码生成强制类型解析,类型解析强制生成给定类型的赋值运算符。

现在,假设 c=ab=a 由于给定的类型对没有必要的赋值运算符而无法解析。在这种情况下,编译将失败。

关于C++ 在编译时检查类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49889778/

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