Pas*_* By 8 c++ lambda language-lawyer
简单地说,以下断言是否会引发火灾?
template<typename T>
auto destructor()
{
return +[](void* p){
((T*)p)->~T();
};
}
assert(destructor<int>() != destructor<char>());
Run Code Online (Sandbox Code Playgroud)
标准似乎只是说lambda转换函数指针与lambda本身做同样的事情,然后你意识到简单的破坏类型都有无操作析构函数,因此是相同的.
此转换函数返回的值是函数 F 的地址,调用该函数时,与调用闭包类型的函数调用运算符具有相同的效果。
指向的函数是根据其行为而不是其标识来指定的。因此,尚不清楚该断言是否会触发。
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |