修改第二章小节名称;修正了示例代码。

This commit is contained in:
Wu Ye 2014-02-13 22:13:50 -08:00
parent 50b2a8cffb
commit e66f371182
2 changed files with 19 additions and 4 deletions

View File

@ -103,7 +103,11 @@ namespace _1_3
template <uint8_t a, typename b, void* c> class B {}; template <uint8_t a, typename b, void* c> class B {};
template <void (*a)()> class C {}; template <void (*a)()> class C {};
template <void (A<3>::*a)()> class D {}; template <void (A<3>::*a)()> class D {};
#if WRONG_CODE_ENABLED
template <float a> class E {}; template <float a> class E {};
#endif
void foo() void foo()
{ {
A<5> a; A<5> a;
@ -116,7 +120,17 @@ namespace _1_3
#endif #endif
} }
#if WRONG_CODE_ENABLED
const char* s = "abc";
template <char const* s> class S
{
};
void foo2()
{
S<"abc"> i;
}
#endif
template <typename T> template <typename T>
class ClassB class ClassB

View File

@ -508,10 +508,11 @@ template <float a> class E {}; // ERROR: 别闹!早说过只能是整数类
从下一章开始,我们便进入了更加复杂和丰富的世界:讨论模板的匹配规则。其中有令人望而生畏的特化与偏特化。但是,请相信我们在序言中所提到的:将模板作为一门语言来看待,它会变得有趣而简单。 从下一章开始,我们便进入了更加复杂和丰富的世界:讨论模板的匹配规则。其中有令人望而生畏的特化与偏特化。但是,请相信我们在序言中所提到的:将模板作为一门语言来看待,它会变得有趣而简单。
## 2. 模板世界的If-Then-Else特化与偏特化 ## 2. 模板元编程基础
###2.1 类模板的匹配规则:特化与部分特化 ###2.1 编程,元编程,模板元编程
###2.2 函数模板的重载、参数匹配、特化与部分特化 ###2.2 模板世界的If-Then-Else类模板的特化与偏特化
###2.3 技巧单元:模板与继承 ###2.3 函数模板的重载、参数匹配、特化与部分特化
###2.4 技巧单元:模板与继承
## 3 拿起特化的武器,去写程序吧! ## 3 拿起特化的武器,去写程序吧!
###3.1 利用模板特化规则实现If-Then-Else与Switch-Case ###3.1 利用模板特化规则实现If-Then-Else与Switch-Case