![](/img/trans.png)
[英]Conditional compilation (constexpr if) and "ISO C++ forbids zero-size array"
使用以下代碼: 我收到編譯器錯誤(帶有 -pedantic 標志),它抱怨不允許零大小數組。 在我的示例中,從未創建具有零大小數組的 object,但看起來它仍然是一個問題。 我試圖通過使用std::conditional來解決它,但即便如此,我還是得到了一個額外的 function,例如: 處理 ...
[英]Conditional compilation (constexpr if) and "ISO C++ forbids zero-size array"
使用以下代碼: 我收到編譯器錯誤(帶有 -pedantic 標志),它抱怨不允許零大小數組。 在我的示例中,從未創建具有零大小數組的 object,但看起來它仍然是一個問題。 我試圖通過使用std::conditional來解決它,但即便如此,我還是得到了一個額外的 function,例如: 處理 ...
[英]Erasing character type and string length in a static string injected as NTTP?
我目前正面臨一個與字符串文字和類型擦除有關的模板元編程問題。 問題如下。 讓我們考慮以下代碼: 問題:如何設計一個 class static_string ,它將作為其類型的一部分“擦除”字符類型及其長度,以便上面的static_assert不會失敗? ...
[英]Difficulty in verifying valide calls with boost::hana::is_valid
我有一個 class Foo ,它可以由 C 風格的字符串、字符串視圖和非臨時字符串構造(實際上它包含其他成員和方法,並且它在傳遞給basic_string*模板的字符上進行模板化):struct Foo { explicit constexpr Foo() : text{} ...
[英]How to do static dispatch base on derivation on a template
如果對象屬於某些模板/類,我如何專門化模板 function 以返回 true,而對於其他模板/類則返回 false 沒有類具有虛函數。 我有一個模板: 我想做特殊處理,或從該模板派生的任何 class。 在下面的示例中,我對DynamicData<>進行了專門化: DynamicDat ...
[英]How to define template template types with inheritance in C++11
我想定義一個派生的 class,它具有模板化基礎 class 的模板模板類型。這可能嗎?如果可以,語法是什么? 我嘗試了很多事情都沒有成功。 請考慮這段代碼: 為什么:我有Derived<U>的現有/工作代碼,其中U是一個包裝的 class W<T> 。 使用模板模板類型在定 ...
[英]Check the tuple each element has a value
我有一個std::tuple< std::optional<Args>... > ,需要檢查每個元素是否都有值。 我已經用 std::index_sequence 實現了它。 但我不確定這是最快編譯時間的最有效解決方案。 對於此類問題,是否有更有效的 O(n) 算法? 或者我 ...
[英]Template parameter deduction and specialization for functions and operators with different behavior for class objects vs scalars
我正在從事一個通過模板元編程涉及一些 static 多態性的項目。 這些類通過數學運算進行交互,這些運算應該同時識別標量和 class object arguments。多態性和對象-對象交互的一個基本示例是: 在我嘗試添加模板專業化來解釋與標量的乘法之前,這似乎工作得很好。 似乎這個新的模板專業化 ...
[英]Convert tuple to variadic arguments
我不確定我想要實現的目標是否可行,但我需要我的模板化 function ( my_func ) 才能同時采用變量 arguments 和元組參數。 更清晰的描述在代碼注釋中。 ...
[英]Passing variadic template arguments to another template
我有這段代碼,其中static_for可以用作使用模板元編程的編譯時循環,而loop_types是一個接受可變參數 arguments 的struct 。每當我嘗試調用 function call時,它都會給我一個錯誤。 在loop_types中,這是一個模板loop ,包含打印類型名稱的 func ...
[英]Getting the types of method overloads with CRTP
我一直在想,是否有可能使用 C++20 以某種方式將方法重載的類型獲取到元組: 我希望元組有效地包含: &S::f(int), &S::f(bool) 。 編輯:這個想法是能夠有多個可以利用模板的各種類: ...
[英]c++ parameter pack expansion with concepts
如果取消注釋行 #1 和注釋行 #2,為什么會出現編譯錯誤? 演示: https://godbolt.org/z/KW6dhsrKd ...
[英]How can I enable/disable a function depending on the size of an array?
我對 TMP 還是很陌生,所以如果這是一個措辭不佳的問題,請原諒我。 我試圖制作一個非常通用的數學向量 class 來存儲任意數量的組件,但默認為 3 並使用 float 作為它的基本表示。 因此,如果您默認構建這些向量之一,它將包含(0.0f,0.0f,0.0f) 這些值本身存儲在std::ar ...
[英]c++ metaprogramming using vs typedef in template
我編寫了以下玩具代碼,但我無法弄清楚為什么使用別名會出現編譯錯誤,但使用 typedef 代碼會成功編譯? 我嘗試了 gcc 和 clang,但兩個編譯器都給出了錯誤。 : 使用 nth_type_t = typename nth_type::type [with long unsigned in ...
[英]How do I add a template specialization when for a generic method on a generic class when the two types are equal?
我正在嘗試添加通用類型方法和 class 一致的專業化,但我無法弄清楚如何指定模板實例化(如果可能的話)。 我最好的猜測是類似於以下內容(盡管它顯然無法編譯):template<typename ClassT> class Foo { public: ClassT x; te ...
[英]How to deduce the template argument when storing a lambda-templated class as a member of another class?
我有一個關於將 lambda 模板化的 object 存儲為 class 成員的問題。 Invoker class 是一個模板化的 class,存儲任意 lambda function。我想將Invoker的實例存儲在另一個 class, Worker中。 但是,當Invoker用作 class ...
[英]C++ template to check if input type implements `operator []`
我正在嘗試使用模板來檢查輸入類型是否實現了operator[] 。 這是我的代碼: 但它沒有用。 無論我輸入哪種類型,它總是 output 0。 我認為如果T = int或T = double , decltype(&T::operator[])將失敗並且將根據 SFINAE 使用主要的h ...
[英]How do I repeat template arguments a set number of times?
我正在寫一個模板化的 class,我想要一個包含一些數據的tuple 。 tuple的類型以這種方式與模板 arguments 相關: 例如, MyClass<int, float, std::string, double>將導致類型為MyData的變量std::tuple<i ...
[英]How to stop clang from overexpanding nested loops via templates?
考慮這段代碼 在clang++ -O0中編譯時,它會在幾秒鍾內編譯,然后運行 4 秒。 但是用clang++ -O2 ,編譯時間長,memory很多。 在godbolt上可以看到,把8改小一點,就充分展開了循環。 我不是讓它完全沒有優化,而是讓它不遞歸,就像嵌套循環應該表現的那樣。 有什么我應該做 ...
[英]template parameter constraints make more general type test fail
#include <concepts> #include <tuple> template<std::integral... Is> using arithmetic_tuple = std::tuple<Is...>; template<t ...
[英]api for indexed variadic arguments
我不知道在將類似元組的對象解包到可調用處理程序中時,即在使用std::apply時,是否有一種好的和干凈的方法來索引可變參數 arguments 。 這是一個不完美但相當干凈的解決方案: 此解決方案比使用std::index_sequence的重載更干凈,因為您不必在 lambda 的 scope ...