在C ++ 98中实现十进制类型

问题描述 投票:2回答:1

我想知道是否有一种方法可以仅使用C ++ 98功能来实现C ++ 11运算符decltype

我的意思是

template<class Func>
struct decl_type{
    typedef Func() type;
};

显然,我的代码无法编译。

c++ decltype
1个回答
0
投票

您不能真正实现 decltype,因为它实际上不是函数,而是编译器关键字,因为您无法实现,例如,returnauto。实际上,decltype(...)auto有点类似,但由c ++预处理器替换为结果类型名称,因为与例如Haskell或Javascript不同,您不能将类型本身存储在值中。但是您可以多次重载一个函数,因此您有类似以下内容:

void declt(int a) {
    typedef int type;
}
void declt(char a) {
    typedef char type;
}
... 
© www.soinside.com 2019 - 2024. All rights reserved.