gpt4 book ai didi

c++ - C++0x 中模板别名的灵活性

转载 作者:IT老高 更新时间:2023-10-28 22:04:06 25 4
gpt4 key购买 nike

据我了解,C++0x 中的模板别名将允许我们执行以下操作:

template <typename T>
using Dictionary = std::map< std::string, T >;

Dictionary<int> ints;
ints[ "one" ] = 1;
ints[ "two" ] = 2;

我有两个问题:

首先,我们能否做到这一点(绑定(bind)到任何类型,或者只是模板):

template <typename Iter>
using ValueType = std::iterator_traits<Iter>::value_type;

其次,使用别名需要在模板中使用 typename 关键字,例如:

template <typename Iter>
typename ValueType<Iter> sum(Iter first, Iter last) { ... }
// ^ required?

或者在别名声明中是否需要?

using ValueType = typename std::iterator_traits<Iter>::value_type;
// ^ required?

或者两者都没有?

最佳答案

语法是:

template <typename Iter>
using ValueType = typename std::iterator_traits<Iter>::value_type;

和你的第二个一样。

来源: http://www2.research.att.com/~bs/C++0xFAQ.html#template-alias

他们的例子是:

template<int N>
using int_exact = typename int_exact_traits<N>::type; // define alias for convenient notation

关于c++ - C++0x 中模板别名的灵活性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4152976/

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