typedef当且仅当满足编译时条件时,我想执行a .如果不满足条件,则根本不typedef执行任何操作.
这可能在C++ 11中吗?
例:
class A {
std::conditional_typedef<true,int,myType1>; // Performs "typedef int myType1".
std::conditional_typedef<false,int,myType2>; // Does nothing at all.
};
Run Code Online (Sandbox Code Playgroud)
我正在寻找这个虚构的std::conditional_typedef.
NCurses 似乎是一个流行的库。它的弱点之一是它不是线程安全的。将共享资源包装在互斥体中应该不难。
是否有具体原因,为什么没有人启动线程安全分支?(法律问题、引入平台依赖性……)
编辑:我的意思不是 use_screen 或 use_window 函数。这些显然要求用户更改其基于 NCurses 的代码。应该可以向 NCurses 本身内的共享资源添加互斥体,并且所有访问函数在对窗口执行某些操作之前都会获取互斥体。我在 NCurses 中想象这样的事情:
#if __cplusplus >= 201103L
#include <mutex>
#define THREADSAFE
#endif
...
#ifdef THREADSAFE
std::recursive_mutex mxCurscr;
#endif
...
int doupdate(void)
{
#ifdef THREADSAFE
mxCurscr.lock();
#endif
... // <-- Access the screen here.
#ifdef THREADSAFE
mxCurscr.unlock()
#endif
}
Run Code Online (Sandbox Code Playgroud)
那么,问题在哪里呢?
请考虑以下示例:
class A { int x; };
Run Code Online (Sandbox Code Playgroud)
现在是什么A::x?
decltype(A::x).假设有一个 ncurses pad。
1.) 我可以创建pad 的子窗口吗?理论上,subwin 会与 pad 共享内存。但是当我调用这个子窗口时会发生什么wrefresh?
2.) 我可以创建pad 的子 pad吗?wrefresh如果是,拨打电话或prefresh在副台上有意义吗?
我目前的理解是,必须为 pad 创建一个 subpad。传递给subpad函数的坐标指定(父)焊盘的位置。返回的子板在概念上是一个窗口(不能大于其父结构),尽管它必须使用该prefresh函数放置到屏幕上。它与父垫共享内存。正确的?