問題タブ [stdany]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - パラメーター パックをベクターに展開する方法
コンパイルの問題エラー: 'std::vector' の初期化に一致するコンストラクターがありません
私が構築しているコード ベースには、可変個引数のテンプレート パラメーターである必要のないオブジェクトがいくつかあります。std::any のベクトルを受け入れるようにしたかったのです。私のオブジェクトは、H1、H2、PARAGRAPH などの HTML エンティティにちなんで名付けられています。
オブジェクト作成のインターフェース。
createElement 関数でのテンプレート パラメーター パックのベクターへの展開がコンパイルされていません。私が使用しているバージョンは c++17 です
テンプレート関数を呼び出すと、属性オブジェクトが渡されます。テンプレート パラメーター内の 1 つで、HTML エンティティ名に似ていますが、すべて大文字です。また、パラメーター パック内には属性があります。属性もオブジェクトです。
たとえば、テンプレート ヘッダー ファイル viewManager.hpp 内で次のように定義されています。
アプリケーションでは、main.cpp のように
ご覧のとおり、この構文では、numericFormat オブジェクトを返すユーザー定義のリテラルが使用されています。
これまでに入手した完全なソースは、 C++ Sourceで見ることができます。あなたが言及したように、ポインタではなく、任意のオブジェクトにデータを含めたいと思います。
c++ - std::any copy-ctor 内の static_assert がコンパイル エラーに等しい移動専用テンプレートの場合、なぜですか?
static_assert
で使用するために、(以下のコードのように)を持つ copy-ctor によって移動のみのテンプレートを拡張できない理由がわかりませんstd::any
std::any::anyでは、 ctor #4 について述べています
このオーバーロードは、 ... std::is_copy_constructible_v<std::decay_t<ValueType>> が true である場合にのみ、オーバーロードの解決に参加します。
私が見る限り、std::is_copy_constructible<MoveOnly>::value
true が返され、copy-ctor が呼び出されることはありません。static_assert
では、コンパイラが内部の copy-ctorについて不平を言う可能性があるのはどうしてでしょうか?