is_convertible
和之间有什么区别is_assignable
?
为什么,
在vs2012
is_convertible<int, int&> is false
is_assignable<int, int&> is true
Run Code Online (Sandbox Code Playgroud)
在gcc4.7.2中
is_convertible<int, int&> is false
is_assignable<int, int&> is false
Run Code Online (Sandbox Code Playgroud) 在Windows上我可以打电话:
_time32(__time32_t); // to get 32bit time_t
_time64(__time64_t); // to get 64bit time_t
Run Code Online (Sandbox Code Playgroud)
(32位和64位程序)
在Linux中有没有办法做到这一点(用GCC编译)?
template<typename T>
void outer(T&& t) {inner(forward<T>(t));}
template<typename T>
void outer(T&& t) {inner((T&&)(t));}
Run Code Online (Sandbox Code Playgroud)
有什么不同?
我用这个测试代码:
cout<<std::is_assignable<int, int>::value<<endl;
cout<<std::is_assignable<int, char>::value<<endl;
cout<<std::is_assignable<int&, int>::value<<endl;
cout<<std::is_assignable<int&, char>::value<<endl;
cout<<std::is_assignable<int, int&>::value<<endl;
cout<<std::is_assignable<int, char&>::value<<endl;
Run Code Online (Sandbox Code Playgroud)
vs2012的结果是:
true
true
true
true
true
true
Run Code Online (Sandbox Code Playgroud)
在gcc4.7.2我得到:
false
false
true
true
false
false
Run Code Online (Sandbox Code Playgroud)
根据标准,哪个结果是正确的?
这是测试代码
#include "windows.h"
#include "iostream"
using namespace std;
__declspec(thread) int tls_int = 0;
void NTAPI tls_callback(PVOID, DWORD dwReason, PVOID)
{
tls_int = 1;
}
#pragma data_seg(".CRT$XLB")
PIMAGE_TLS_CALLBACK p_thread_callback = tls_callback;
#pragma data_seg()
int main()
{
cout<<"main thread tls value = "<<tls_int<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
使用多线程调试DLL(/ MDd)运行结果:主线程tls值= 1
使用多线程调试(/ MTd)运行结果:主线程tls值= 0
看起来无法捕获使用MTd时创建的主线程
为什么?