小编sol*_*old的帖子

字符串化模板参数

在C++中是否可以对模板参数进行字符串化?我试过这个:

#define STRINGIFY(x) #x

template <typename T>
struct Stringify
{
     Stringify()
     {
          cout<<STRINGIFY(T)<<endl;
     }
};

int main() 
{
     Stringify<int> s;
}
Run Code Online (Sandbox Code Playgroud)

但我得到的是'T',而不是'int'.似乎预处理器在模板解析之前启动.

有没有其他方法可以做到这一点?

有没有办法在模板解析后进行预处理?(编译器是VC++).

c++ templates metadata stringification c-preprocessor

34
推荐指数
4
解决办法
2万
查看次数

特定成员的模板专业化?

是否可以专门化模板类的特定成员?就像是:

template <typename T,bool B>
struct X
{
    void Specialized();
};

template <typename T>
void X<T,true>::Specialized()
{
    ...
}

template <typename T>
void X<T,false>::Specialized()
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

当然,这段代码无效.

c++ templates c++-faq specialization

24
推荐指数
2
解决办法
6822
查看次数

Windows上本地IPC的套接字与命名管道?

是否有任何理由支持在套接字上使用命名管道进行本地IPC(使用win-api),Effective-wize,resource-wize或其他方式,因为两者的行为非常相似(并且可能通过相似的接口抽象),在一个可能已经使用套接字用于网络目的的应用程序中?

我至少可以说出寻址问题:套接字的端口号与管道的文件名.此外,命名管道(AFAIK)不会警告防火墙(阻止/取消阻止对话框),尽管被阻止的应用程序仍然可以通过本地套接字进行通信.还有什么需要考虑的吗?

在使用套接字的情况下,在本地使用套接字时是否有任何winsock设置/标志?

sockets winapi ipc named-pipes

20
推荐指数
2
解决办法
1万
查看次数

在接受之前拒绝TCP连接?

acceptwinsock 有3个不同的版本.除了accept标准合规的基本内容之外,还有AcceptEx最先进的版本(由于它具有重叠的io功能),以及WSAAccept.后者支持条件回调,据我所知,它允许在接受之前拒绝连接请求(当SO_CONDITIONAL_ACCEPT启用该选项时).其他任何版本都不支持此功能.

由于我更喜欢​​使用AcceptEx重叠的io,我想知道为什么这个功能只能在更简单的版本中使用?

我不太了解TCP的内部工作原理,告诉我们在接受连接之前拒绝连接和在连接建立后立即断开连接之间实际上有什么区别?如果有,有没有办法模仿WSAAccept功能AcceptEx

有人能否对这个问题有所了解?

tcp winsock

12
推荐指数
1
解决办法
1万
查看次数

可变长度模板参数列表?

我记得做过这样的事情:

template <ListOfTypenames>
class X : public ListOfTypenames {};
Run Code Online (Sandbox Code Playgroud)

也就是说,X继承自作为模板参数传递的可变长度的类型名列表.当然,这段代码是假设的.

但是我找不到任何参考.可能吗?是C++ 0x吗?

c++ templates variable-length c++11

10
推荐指数
2
解决办法
2万
查看次数

在DllMain中创建一个线程?

似乎从DllMain中创建一个线程,DLL_PROCESS_ATTACH直到所有dll都被加载后它才会开始.因为我需要在继续之前确保线程运行,所以我遇到了僵局.有没有办法强制线程启动?

dll winapi multithreading

10
推荐指数
2
解决办法
1万
查看次数

关于pre-vista系统的GetThreadId?

显然,GetThreadId是一个Vista API.如何在pre vista系统上获得线程的ID?

winapi multithreading portability windows-vista

7
推荐指数
1
解决办法
4847
查看次数

在C++中继承友谊?

由于类友谊不是在C++中继承的,那么"伪造"它的最佳方式是什么?

我正在考虑通过受保护的方法在要继承的基类中公开友元类的私有接口,但这导致必须两次写入(并维护)相同的接口.

还有其他方法吗?

c++ inheritance friend-class

7
推荐指数
1
解决办法
280
查看次数

winsock中的异步地址解析?

在winsock中查看异步地址解析似乎只有两个选项要么gethostbyname在单独的线程上使用阻塞,要么使用WSAAsyncGetHostByName.后者的设计是出于某种原因使用窗口消息,而不是重叠操作和完成端口/例程.

是否有任何版本的gethostbyname异步操作以与winsock API的其余部分类似的方式与重叠操作异步工作?

asynchronous winsock gethostbyname

6
推荐指数
1
解决办法
886
查看次数

Java ME SDK 3无法启动

我下载并安装了最新的JDK和Java ME SDK.两者似乎安装得很好.

但是,当我尝试运行SDK时,当启动屏幕上的进度条变为"启动模块..."时,它会挂起一段时间,然后开始弹出表单的异常:

java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:525)
    at java.net.Socket.connect(Socket.java:475)
    at java.net.Socket.<init>(Socket.java:372)
    at java.net.Socket.<init>(Socket.java:186)
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)
Caused: java.rmi.ConnectException: Connection refused to host: localhost; nested exception is: 
    java.net.ConnectException: Connection refused: connect
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)
    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
    at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:97)
Caused: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: localhost; nested exception is: 
    java.net.ConnectException: Connection refused: connect]
    at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:101) …
Run Code Online (Sandbox Code Playgroud)

sdk java-me

5
推荐指数
1
解决办法
4708
查看次数