请考虑以下示例:
#include <iostream>
#include <string>
#include <utility>
template <typename Base> struct Foo : public Base {
using Base::Base;
};
struct Bar {
Bar(const Bar&) { }
Bar(Bar&&) = delete;
};
int main() {
std::cout << std::is_move_constructible<Bar>::value << std::endl; // NO
std::cout << std::is_move_constructible<Foo<Bar>>::value << std::endl; // YES. Why?!
}
Run Code Online (Sandbox Code Playgroud)
尽管基类是不可移动构造的,为什么编译器会生成移动构造函数?
这是标准还是编译器错误?是否有可能"完美地传播"将构造从基础移动到派生类?
是否有可靠/官方的方法来完全禁用用户与视图的交互?类似的SO问题仅建议拦截鼠标事件,但我正在寻找一个完整的解决方案,它将禁用视图及其后代中的所有交互,包括:
一旦交互被禁用,视图(及其后代)也应该立即失去键盘/鼠标焦点。
这应该与transitionFromViewController:toViewController:options:completionHandler:没有NSViewControllerTransitionAllowUserInteraction标志的情况类似,但我找不到在动画之外做到这一点的方法。
更新: 描述我正在寻找的内容的另一种方法是:视图必须完全像隐藏的一样,但仍然绘制在屏幕上。