Ala*_*ing 6 c++ templates default typedef readability
我声明一个模板化的类,所有参数都有默认参数,例如:
template<typename TYPE = int>
class Foo {};
Run Code Online (Sandbox Code Playgroud)
那么以下两个是等价的:
Foo<int> one;
Foo<> two;
Run Code Online (Sandbox Code Playgroud)
但是,我不允许这样做:
Foo three;
Run Code Online (Sandbox Code Playgroud)
是否可以使用typedef
相同的名称但没有括号来实现,如下所示:
typedef Foo<> Foo;
Run Code Online (Sandbox Code Playgroud)
我做了类似下面的事情,我不知道你是否愿意:
template<typename TYPE = int>
class basic_Foo {};
typedef basic_Foo<int> Foo;
Run Code Online (Sandbox Code Playgroud)
typedef Foo<> Foo;
如果允许
声明,则此后Foo
不能指定作为模板的名称。即,以下内容无效。
template< template< class > class > struct A {...};
A< Foo > a; // error
Run Code Online (Sandbox Code Playgroud)
虽然上面的typedef
做法在实际中是不允许的,但是如果你仍然需要写成Foo
as Foo<>
,像下面这样的宏就可以达到目的。
#define Foo Foo<>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1806 次 |
最近记录: |