说,我在我的一个类中有这段代码定义了
现在,定义变量的签名看起来令人难以置信。
std::map<std::string, std::map<std::string,
std::function<void(std::shared_ptr<HTTPRequest>,
std::shared_ptr<HTTPResponse>)>>> routeFunctions_;
我最近了解了decltype,但无法正确使用它。
decltype(x) routeFunctions_; // What should be there in the place of x ?
答案 0 :(得分:3)
typedef
此类型。auto
或decltype
。decltype
。看看这篇文章:
http://en.cppreference.com/w/cpp/language/auto http://en.cppreference.com/w/cpp/language/decltype
http://www.cprogramming.com/c++11/c++11-auto-decltype-return-value-after-function.html
在这种情况下,您的选择是typedef
:
typedef std::map<std::string, std::map<std::string,
std::function<void(std::shared_ptr<HTTPRequest>,
std::shared_ptr<HTTPResponse>)>>> RouteFunctionsContainer;
RouteFunctionsContainer routeFunctions_;
答案 1 :(得分:0)
您在其中放置了一个与您想要的新变量类型相同的变量名称。
int x = 3;
decltype(x) y = 5; // y is an int because x is an int
您可以假装变量的类型在语法上替换源代码中的decltype。