我個人一開始是在cppreference寫例子的時候養成加 std:: 的習慣,因為cppreference只有在寫了完整名稱的時候才能自動生成到相應條目的連結。
之後在其他討論中也使用全名,是為了防止歧義。C++標準庫的很多型別是可以不依賴黑科技就實現的,很多第三方庫也確實實現了與標準庫的一些型別對應的東西,但在細節上有所不同,例如有std::sort和thrust::sort、std::variant和boost::variant、std::future和folly::Future。為了明確一些描述只適用於標準庫的版本,才加上 std:: 以說明。我個人覺得這不是標準庫的名字沒有辨識度,相反,因為標準庫的命名沒有問題,第三方庫才會沿用。
在標頭檔案裡使用 using 是不對的,這是由於語言本身的約束,這一點其他答主有解釋。
在實現檔案使用 using 不算少見,當然也存在防止 ADL 而故意使用名稱空間限定,或者因為標準庫元件用得不多所以不用 using 更省事的情況。
我個人一開始是在cppreference寫例子的時候養成加 std:: 的習慣,因為cppreference只有在寫了完整名稱的時候才能自動生成到相應條目的連結。
之後在其他討論中也使用全名,是為了防止歧義。C++標準庫的很多型別是可以不依賴黑科技就實現的,很多第三方庫也確實實現了與標準庫的一些型別對應的東西,但在細節上有所不同,例如有std::sort和thrust::sort、std::variant和boost::variant、std::future和folly::Future。為了明確一些描述只適用於標準庫的版本,才加上 std:: 以說明。我個人覺得這不是標準庫的名字沒有辨識度,相反,因為標準庫的命名沒有問題,第三方庫才會沿用。
在標頭檔案裡使用 using 是不對的,這是由於語言本身的約束,這一點其他答主有解釋。
在實現檔案使用 using 不算少見,當然也存在防止 ADL 而故意使用名稱空間限定,或者因為標準庫元件用得不多所以不用 using 更省事的情況。