***** STL 原代码里面的一段看不董鸟(VS2012 版本) ************
std::function 里面的申明如下
template<class _Fty>
class function
: public _Get_function_impl<_Fty>::type
{....
};
里面使用了类 _Get_function_impl,但是类定义的时候只有一个参数,下面的宏定义,模版偏特化(专门化)_Get_function_impl 的时候,回多出很多参数。也就是有可能是这样的。
template<class _Tx> struct _Get_function_impl;
展开宏定义,有可能出现类似下面的定义
template<class _Tx,class _v0_t> struct _Get_function_impl<_Tx,_v0_t>
{
typedef _Func_class<_Ret,v0_t> type;
};
template<class _Tx,class _v0_t,class _v1_t> struct _Get_function_impl<_Tx,_v0_t,v1_t>
{
typedef _Func_class<_Tx,_v0_t,_v1_t> type;
};
这样,和第一个定义,只有一个模版参数 _Tx 的不符,这个是什么原因???
// TEMPLATE CLASS _Get_function_impl
template<class _Tx>
struct _Get_function_impl;
#define _CLASS_GET_FUNCTION_IMPL( \
TEMPLATE_LIST, PADDING_LIST, LIST, COMMA, CALL_OPT, X2, X3, X4) \
template<class _Ret COMMA LIST(_CLASS_TYPE)> \
struct _Get_function_impl<_Ret CALL_OPT (LIST(_TYPE))> \
{ /* determine type from argument list */ \
typedef _Func_class<_Ret COMMA LIST(_TYPE)> type; \
};
#define _CLASS_GET_FUNCTION_IMPL_CALLS( \
TEMPLATE_LIST, PADDING_LIST, LIST, COMMA, CALL_OPT, X2, X3, X4) \
_VARIADIC_CALL_OPT_X1(_CLASS_GET_FUNCTION_IMPL, \
TEMPLATE_LIST, PADDING_LIST, LIST, COMMA, __cdecl, X2, X3, X4)
_VARIADIC_EXPAND_0X(_CLASS_GET_FUNCTION_IMPL_CALLS, , , , )
...全文
相关推荐
testVTK.7z vs2012测试VTK库加载stl文件
这个项目名为“testVTK.7z”的压缩包文件,显然是为使用Visual Studio 2012(简称vs2012)进行VTK库的测试而准备的,特别是针对加载STL(Stereo Lithography
VC++2012 MFC实现调用TetGen对stl模型数据进行四面体剖分
### VC++2012 MFC 实现调用 TetGen 对 STL 模型数据进行四面体剖分#### 概述本文旨在详细介绍如何利用 VC++2012 和 MFC (Microsoft Foundation
CPP-VS2012-PPL.rar_VS2012
这个压缩包“CPP-VS2012-PPL.rar_VS2012”包含的是关于如何在 Visual Studio 2012 环境下使用 PPL 的详细指南,以及相关的源码示例,帮助开发者更好地理解和应用这一技术
VS2008无法直接查看STL值的解决方法
如果“在变量窗口中显示对象的原始结构”的选项不存在,可能需要进一步探索VS的其他调试设置,或者尝试安装或更新调试可视化插件,以达到直接查看STL容器内容的目的。5.
STLViewer读取并显示stl文件
本文将深入探讨如何使用MFC(Microsoft Foundation Classes)程序通过OpenGL库来读取并显示STL文件,以及在不同开发环境中,如VC6和VS2008中的实现差异。


