私はこの問題を抱えています:
struct A
{
... some const virtual members ...
};
struct B: A
{
... some const overrides ...
};
struct C
{
C(std::initializer_list<A> const& list) // initialized with instances of B
{
for (auto const& a: list)
{
a.virtual_member_call(); // but struct B overloads do not get called
}
}
};
これは、BのインスタンスがAのインスタンスにコピーされるために発生します。この問題を回避するための回避策(ヒープからの割り当て以外)は何ですか?可変個引数テンプレートコンストラクターはそのようなものの1つである可能性があると思います。