[C++11]不允许使用auto的四个场景
生活随笔
收集整理的這篇文章主要介紹了
[C++11]不允许使用auto的四个场景
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
不允許使用auto的四個場景:
1.不能作為函數參數使用,因為只有在函數調用的時候才會給函數參數傳遞實參,auto要求必須要給修飾的變量賦值,因此二者矛盾。
代碼如下:
//error int func(auto a, auto b) {cout << a << " " << b << endl; }2.不能用于類的非靜態成員變量的初始化。
代碼如下:
class Test {auto a = 0;//errorstatic auto b = 2;//error,類的靜態非常量成員不允許在類內部直接初始化static const auto c = 10;//ok };3.不能使用auto關鍵字定義數組。
代碼如下:
int func() {int array[] = { 1,2,3,4,5 };//okauto t1 = array;//ok,t1 -> int *auto t2[] = array;//error,auto無法定義數組auto t3[] = { 1,2,3,4,5 };//error,auto無法定義數組 }4.無法使用auto推導出模板參數。
代碼如下:
template <typename T> struct Test {};int func() {Test<double> t;Test<auto> t1 = t;//error,無法推導模板類型return 0; }總結
以上是生活随笔為你收集整理的[C++11]不允许使用auto的四个场景的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [C++11]常量表达式函数
- 下一篇: [C++11]自动类型推导auto