我正在为 C++11 编写 NamedPipe 提取,并希望拥有以下 API*:
template<typename Mode>
class NamedPipe final {
public:
void Open();
std::enable_if<Mode == Receiver>
void Send();
std::enable_if<Mode == Receiver>
void Receive();
void Close();
}
所以使用看起来像这样:
NamedPipe<Sender> pipe_sender("test");
NamedPipe<Reciever> pipe_receiver("test");
pipe_sender.Open();
pipe_receiver.Open();
pipe_sender.Send("Some data");
pipe_receiver.Receive();
pipe_sender.Receive(); <--- compilation error
我一直type_traits
在 C++11 中使用,但只是真正开始使用它们——我真的很喜欢使用它们,但这确实改变了学习曲线。有没有足够知识的人指出我正确的方向?
* 第一个例子是故意粗略的,因为我一直在用模板的东西绕圈子——我真的只需要走上正确的道路!