"是什么意思?-6ren"> "是什么意思?-tokenizer<> tok(s)是什么意思下面的代码行?我知道 <> 在使用模板时使用,但根据我的理解 <> 不应该为空 - 它应该包含类型定义。 using namespace std;-6ren">
gpt4 book ai didi

c++ - 模板使用中空 "<>"是什么意思?

转载 作者:IT老高 更新时间:2023-10-28 12:37:22 35 4
gpt4 key购买 nike

tokenizer<> tok(s)是什么意思下面的代码行?我知道 <> 在使用模板时使用,但根据我的理解 <> 不应该为空 - 它应该包含类型定义。

    using namespace std;
using namespace boost;
string s = "This is, a te\x1Dst";
cout<<s<<endl;
tokenizer<> tok(s);
for(tokenizer<>::iterator beg=tok.begin(); beg!=tok.end();++beg){
cout << *beg << "\n";
}

最佳答案

这只是意味着模板应该使用默认参数。例如:

template <int N = 10>
class X { };

X<> x; // this is an X<10>

显然,只有在所有模板参数都具有默认值时才有可能(或对于没有强制参数的 variadic templates - 见下文)......

对于 boost::tokenizer具体来说,模板的:

template <
class TokenizerFunc = char_delimiters_separator<char>,
class Iterator = std::string::const_iterator,
class Type = std::string
>
class tokenizer;

这与你的问题主体所关注的tokenizer<> tok的含义”无关,而是解决更一般的问题标题“空的含义是什么” <>” 在模板使用中?”...

正如 Shafik 首次提到的,my_template<>表格也可以与 variadic templates 一起使用如 std::tuple 指定一个空的parameter pack :

// namespace std { template <class ...Args> class tuple; }
std::tuple<> t; // this tuple can't store anything :-.

关于c++ - 模板使用中空 "<>"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25804669/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com