問題タブ [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.

0 投票する
1 に答える
564 参照

c++ - パラメーター パックをベクターに展開する方法

コンパイルの問題エラー: 'std::vector' の初期化に一致するコンストラクターがありません

私が構築しているコード ベースには、可変個引数のテンプレート パラメーターである必要のないオブジェクトがいくつかあります。std::any のベクトルを受け入れるようにしたかったのです。私のオブジェクトは、H1、H2、PARAGRAPH などの HTML エンティティにちなんで名付けられています。

オブジェクト作成のインターフェース。

createElement 関数でのテンプレート パラメーター パックのベクターへの展開がコンパイルされていません。私が使用しているバージョンは c++17 です

テンプレート関数を呼び出すと、属性オブジェクトが渡されます。テンプレート パラメーター内の 1 つで、HTML エンティティ名に似ていますが、すべて大文字です。また、パラメーター パック内には属性があります。属性もオブジェクトです。

たとえば、テンプレート ヘッダー ファイル viewManager.hpp 内で次のように定義されています。

アプリケーションでは、main.cpp のように

ご覧のとおり、この構文では、numericFormat オブジェクトを返すユーザー定義のリテラルが使用されています。

これまでに入手した完全なソースは、 C++ Sourceで見ることができます。あなたが言及したように、ポインタではなく、任意のオブジェクトにデータを含めたいと思います。

0 投票する
1 に答える
94 参照

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>::valuetrue が返され、copy-ctor が呼び出されることはありません。static_assertでは、コンパイラが内部の copy-ctorについて不平を言う可能性があるのはどうしてでしょうか?