关键字typeof in c 11

我知道:

> typeof是gcc扩展名,不属于C标准.

问题:

> C 11中的单词typeof是否被弃用?换句话说,在使用C 11时,是否允许它仍然用作gcc扩展名?
>用decltype替换每个类型会产生相同的代码行为是否正确?
>假设我有模板< typename T>类包装器.声明wrapper_some_field使其等效于:Wrapper< typeof(some_field)>的最佳方法是什么? wrapper_some_field

解决方法

Is the word typeof deprecated in C++11? in other words,is it allowed to still use it as a gcc extension when using C++11?

它没有被弃用.它从未作为关键字存在. gcc suggests如果使用-std = c **进行编译,则改为使用__typeof__.

Is it correct to say that replacing every typeof with decltype yields the same behavIoUr of the code?

不,例如,给定:

int& foo();

decltype(foo())是int&但是__typeof __(foo())是int.

Assume I have template<typename T> class wrapper. […]

您可以编写包装器< std :: remove_reference_t< decltype(some_field)>>包装{some_field},但编写构造函数模板会更清晰:

template <class T> wrapper<T> make_wrapper(T const& val) { return {val}; }
auto wrap = make_wrapper(some_field);

相关文章

/** C+⬑ * 默认成员函数 原来C++类中,有6个默认成员函数: 构造函数 析构函数 拷贝...
#pragma once // 1. 设计一个不能被拷贝的类/* 解析:拷贝只会放生在两个场景中:拷贝构造函数以及赋值运...
C类型转换 C语言:显式和隐式类型转换 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译...
//异常的概念/*抛出异常后必须要捕获,否则终止程序(到最外层后会交给main管理,main的行为就是终止) try...
#pragma once /*Smart pointer 智能指针;灵巧指针 智能指针三大件//1.RAII//2.像指针一样使用//3.拷贝问...
目录&lt;future&gt;future模板类成员函数:promise类promise的使用例程:packaged_task模板类例程...