c – std :: remove_reference有什么意义
发布时间:2020-12-16 10:14:42 所属栏目:百科 来源:网络整理
导读:让我潜入C 14通用lambdas: #include iostream// g++ -std=c++14 templatetypename TT incr(T v){ return v + 1;}int main(){ float f = 2.0; int i = 3; auto selfincr = [] (auto value) { value = incrstd::remove_referencedecltype(value)(value); // A
让我潜入C 14通用lambdas:
#include <iostream> // g++ -std=c++14 template<typename T> T incr(T v) { return v + 1; } int main() { float f = 2.0; int i = 3; auto selfincr = [] (auto & value) { value = incr<std::remove_reference<decltype(value)>>(value); // A value = incr<decltype(value)>(value); // B }; selfincr(f); selfincr(i); std::cout << "f " << f << ",i " << i << std::endl; return 0; } 因为//行引起了一个
我的直接猜测是删除了引用,所以我添加了行// A.但是这会产生一个
那我怎么能删除那个引用呢? 解决方法
incr< std :: remove_reference< decltype(value)>>(value),您指定 value = incr<typename std::remove_reference<decltype(value)>::type>(value); // A // ~~~~~~~~ ~~~~~~ 从C 14开始,你可以更简单: value = incr<std::remove_reference_t<decltype(value)>>(value); // A // ~~ LIVE (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |