variable-templates

    2熱度

    1回答

    我有一個工作的Spirit-X3分析器,它可以解析兩個緊密相關的語法來設置草稿和檢查器位置。我定義了兩個可變模板特作爲解析器語法的兩種方言: // general variable template template<class Format> auto const position = []{}; // template specialization for algebraic nota

    8熱度

    2回答

    假設您有一個元組類型,並且想要提取其模板參數包以實例化另一個模板。如果這是一個類型的模板,那麼我可以有一個這樣的工具: template < typename Tuple, template <typename...> typename What > struct PutTupleInT; template < typename... Types, template <typename...

    6熱度

    2回答

    這似乎是另一個「誰做得很好?」因爲gcc 6.0.0和clang 3.7.0的行爲不同。 讓我們假設我們有一個變量的模板,這需要const char *非模板參數並專用於給定的指針: constexpr char INSTANCE_NAME[]{"FOO"}; struct Struct{ void function() const { std::cout << __PRETTY_FUNCTI

    0熱度

    1回答

    我可以對模板變量使用enable_if(或者是否存在一些替代技術)。例如 typedef float Float; typedef double Double; template<class T> constexpr Bool IsFloat = std::is_same_v<T, Float>; template<class T> constexpr Bool IsDouble =

    3熱度

    1回答

    以下代碼: /tmp/ccuciovi.o: In function `double fun<double>(double)': gcc-bug.cpp:(.text._Z3funIdET_S0_[_Z3funIdET_S0_]+0xd): undefined reference to `foo<double>' collect2: error: ld returned 1 exit stat

    4熱度

    2回答

    是否可以在內聯constexpr函數內使用變量模板而不暴露變量模板本身? 例如,該編譯和工作原理: template<typename T> constexpr T twelve_hundred = T(1200.0); template<typename T> inline constexpr T centsToOctaves(const T cents) { return ce

    5熱度

    1回答

    我想在一個頭文件中轉發聲明變量模板,然後在單獨的編譯單元中有實際的實例。 我被帶到相信C++ 14變量模板非常像靜態類變量那樣操作。不幸的是,這似乎並不是這樣,它阻止了我向前聲明我的變量模板。 template <typename T> struct Variable { static int variable; }; template <typename T> extern i

    4熱度

    1回答

    當我試圖專注一個模板變量爲一個通用的容器(例如std::list<...>,而不是一個具體的一個,如std::list<double>)我得到一個鏈接錯誤與gcc 5.3(但不與clang 3.5 ) /tmp/ccvxFv3R.s: Assembler messages: /tmp/ccvxFv3R.s:206: Error: symbol `_ZL9separator' is already

    5熱度

    1回答

    我有以下代碼: // Case #1 float f = 1.0f; float f2 = sqrt(f * pi); // Case #2 double d = 1.0; double d2 = sqrt(d * pi); 有什麼辦法來定義變量pi使operator*和sqrt將在float S IN案例#1操作,但將在案例#2 double s運行? 也許這可能與C++ 14變

    0熱度

    2回答

    環境令人驚訝值:vs2013 RC5/vs2017; 項目:Win32控制檯應用程序; 表示:編譯和運行了一小會兒,然後中斷和觀看變量 「TASK_」; 如果 「add_task(&測試::打印,&噸,STR,10)」,在主FUNC中, 「TASK_」 是正確值; 但是如果在func mytest中「add_task(& Test :: print,& t,str,10)」,則「task_」是錯誤