decltype

    3熱度

    1回答

    typedef decltype(true ? (long&&)0 : (long&&)0) T; T應該是什麼? 根據gcc(4.7),它是long。根據叮咚(主幹),它是long&&。這種差異導致clang無法編譯使用gcc 4.7的libstdC++的代碼。誰是對的? UPDATE:作爲ildjarn指出,鏘是正確的,並作爲理查德史密斯指出,錯誤的libstdC++是由於在標準的錯誤。這

    1熱度

    2回答

    char foo() { std::cout<<"foo()"<<std::endl; return 'c'; } void foo(char &&i) { std::cout<<"foo(char &&i)"<<std::endl; } struct pipe {}; template

    6熱度

    1回答

    信息: 我正在努力學習模板元編程(按照this book)。他們給出的一個有用的例子是尺寸分析。我在書中執行它,一切都很好; see here。 但是我的問題是我想用混合類型的維度分析框架。通過這個,我的意思是你可以說一個標量的質量乘以矢量與加速度的維度來給出一個矢量力量。由於它站在鏈接中,它們只能使用相同類型的T來輸入和輸出所有操作。 我有擁有所有必要的操作與乘法/純量劃分等3 Vector類,

    1熱度

    2回答

    struct C { int Foo(int i) { return i; } typedef decltype(C::Foo) type; }; 由於不存在這樣的類型作爲成員函數類型(沒有,是嗎?),我期望C::type是int (int)。 但使用Visual C++ 2012 RC以下不會編譯: std::function<C::type> f; 那麼是什麼

    6熱度

    4回答

    我知道這在C++ 03中是不可能的,但我希望有一些新的巫術允許我這樣做。見下: template <class T> struct Binder { template<typename FT, FT T::*PtrTomember> void AddMatch(); }; struct TestType { int i; }; int main(int

    3熱度

    1回答

    這想出了使用decltype的時候,當我尋找到一個錯誤的boost::fusion::fused函數包裝。這個問題似乎是一個無效的decltype是一個編譯錯誤,即使不需要它的模板實例化,我也無法弄清楚如何解決這個問題來創建一個通用的函數包裝器。 這是我在單參數的包裝嘗試: #include <utility> #include <type_traits> template <class T

    0熱度

    1回答

    我目前在我的代碼中有這個。 template<typename T1> class MONEYTRANSFER { SOURCEACCOUNT<T1, MONEYTRANSFER> *SourceAccount; // Line 2 MONEYTRANSFER(T1 *src) { SourceAccount = new (src) SOURCEACCOUNT<

    11熱度

    1回答

    struct X{}; template<class T> decltype(X() == int()) f(T const&){ return true; } int main(void) { X x; f(x); } 爲什麼,只是爲什麼?沒有operator==定義任何地方! 我真的很想了解這裏發生了什麼,以提供有關MS Connect的詳細錯誤報告。我要瘋

    3熱度

    2回答

    我試圖做到這一點: typedef std::map<std::string, time_t> my_map; const mymap& some_function(); class bla { private: my_map::iterator current bla(const mymap& m) : current(m.begin()) { } }

    0熱度

    1回答

    由於auto和decltype都用於推斷類型。我以爲 他們會一樣。 但是,this問題的答案是否定的。 我仍然認爲它們不能完全不同。 我能想到一個簡單的例子,其中i的類型在以下兩種情況下都是相同的。 auto i = 10; and decltype(10) i = 10; 那麼auto和decltype行爲等價的可能情況是什麼?