我正在構建一個只包含頭文件的庫(出於很好的理由;不要討厭),它包含一個類以及類成員函數的實現。在這樣做時,我遇到了一個非常奇怪的錯誤<unordered_set>
。海灣合作委員會的Bugzilla搜索似乎沒有解決這個問題。<unordered_set>中的錯誤?
我的代碼打破(嚴重)有我的名字空間內的包括。
namespace probability {
#include <string>
#include <unordered_set> // only this include breaks
#include <unordered_map>
class ProbabilityTools
{
...
一次偶然的機會,我感動的#includes類的命名空間之外,並與<unordered_set>
解決了這一問題。當放置在名稱空間內時,其他包括引起此問題的只有<unordered_set>
。
#include <string>
#include <unordered_set> // works when outside the namespace
#include <unordered_map>
namespace probability {
class ProbabilityTools
{
...
我使用GCC克++ 4.8與-std = C++ 11建立這個代碼工作在所述第二配置和儘可能<unordered_map>
使用的工作原理,在這兩種配置。
這可能是一個libstdC++錯誤? GCC bug?
不要在命名空間中包含標準庫頭,這是代碼中的錯誤。 – mattnewport
請注意,這不是STL。這將是C++標準庫的GCC實現。 – juanchopanza
錯誤出現在您的代碼中,而不是庫中。庫包括不包含在命名空間內。 – SergeyA