typetraits

    -4熱度

    2回答

    請哦,最明智的C++ type_traits大師,有人可以解釋爲什麼 此代碼失敗,顯示錯誤 - 我正在分析最新的C++ - 17 草案標準,並不明白爲什麼會失敗(與GCC-5.4.0在Linux上): #include <type_traits> struct a {static void f(void){} }; struct b {static void f(void){}

    1熱度

    1回答

    什麼是最優雅的方式(可能是C++ 17-way)來檢查兩個不同類中定義的兩個方法的簽名是否完全相同? 例如: template< typename ...Ts > struct A { void f(Ts...); }; template< typename ...Ts > struct B { void g(Ts...); }; static_assert

    2熱度

    2回答

    我有一些泛型函數返回<T>類型的變量。我將一些2個迭代器傳遞給函數。然後,我嘗試用函數distance來計算矢量的大小。在函數內部,我定義了一個新的類型定義,稱爲v_size,但該矢量的<T>類型未知。我如何通過只傳遞迭代器來計算矢量的大小? template<class In, class T> T my_func(In b, In e) { typedef typename

    1熱度

    1回答

    我試圖實現以下(用C++ 17功能): #include <type_traits> template<auto value_> using constant_t = std::integral_constant<decltype(value_), value_>; template<typename ... > class Tuple {}; template<auto ... v

    3熱度

    1回答

    我試圖根據應用於函數的屬性來實現不同的行爲。基本上我試圖看看是否有可能在編譯時測試屬性的存在。 struct AbortError { [[noreturn]] static void error(const std::string& msg) { std::cerr << "critical error: " << msg << std::endl;

    1熱度

    1回答

    我想在編譯時將函數的模板類型限制爲特定的類及其子類。要做到這一點,我使用的類型性狀std::enable_if_t和std::is_base_of這樣的: template <typename T = std::enable_if_t<std::is_base_of<A, T> > > 但仍然模板與不繼承層次結構(即int)的一部分類型的編譯。下面是該問題的MCVE: class A { p

    4熱度

    1回答

    cout << std::is_assignable<int*, std::nullptr_t>::value << endl; cout << std::is_assignable<int*&, std::nullptr_t>::value << endl; 輸出是: 我不明白爲什麼第一個檢查返回假 我可以nullptr分配給參考指針,但我無法將其分配給原始指針? 這是相反的! int*

    1熱度

    1回答

    在試圖更好地理解可變參數模板時,我自己根據給定的條件(在<type_traits>中定義的選擇)編寫編譯時類型選擇器的任務,例如std::is_signed,std::is_floating_point等)。選擇器應該選擇符合指定爲模板參數的條件的第一個類型。 給你舉個例子: template<template<typename> class Cond, typename... T> struc

    2熱度

    2回答

    我有以下代碼來確定2種類型是否具有可比性。 template<typename T, typename U, typename = std::void_t<>> struct is_comparable : std::false_type {}; template<typename T, typename U> struct is_comparable<T, U, std::v

    2熱度

    1回答

    我正在嘗試使用C++ 14元編程來查找lambda函數或自由函數是否爲常量。 我目前的策略是在每個參數上使用std::is_reference,std::is_pointer和std::is_const。 (目前,忽略了全局變量...) 使檢查對象類型看起來是這樣的...... template <typename F> struct is_const_func: public function