Nik*_*iou 6 c++ templates overload-resolution template-meta-programming c++11
什么是技术/ c ++语言工具 - 提供编译时分支的功能?
第一次尝试枚举它们(我期待添加更正):
重载分辨率:例如,选择"最佳"版本适合所提供的参数
void F(X& arg);
void F(X&& arg);
Run Code Online (Sandbox Code Playgroud)模板特化:创建为"特殊参数"运行的代码 - 一种对模板元编程和编译时递归至关重要的技术
template<int N> struct A { /* implementation */ };
template<> struct A<0> { /* specific code */ };
Run Code Online (Sandbox Code Playgroud)SFINAE&expression sfinae:(1)的一个特例,为条件接口提供工具.
template<class C, class F>
auto test(C c, F f) -> decltype((c->*f)(), void()); // 'C' is pointer type
Run Code Online (Sandbox Code Playgroud)虽然不是严格的编译时分支,但您可以添加第四个选项:
4) C++宏
#if SOMETHING
...
#else
...
#endif
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
409 次 |
最近记录: |