6
なぜこれは機能しませんか?リスト初期化でstd :: vectorを初期化できない
#include <vector>
struct A {
template <typename T> void f(const std::vector<T> &) {}
};
int main() {
A a;
a.f({ 1, 2, 3 });
}
なぜこれは機能しませんか?リスト初期化でstd :: vectorを初期化できない
#include <vector>
struct A {
template <typename T> void f(const std::vector<T> &) {}
};
int main() {
A a;
a.f({ 1, 2, 3 });
}
あなたはリストの初期化とstd::vector<T>
を初期化することができます。しかし、は、テンプレートの引数T
を引数リストにstd::vector<T>
を使用して、std::vector<T>
以外の関数を渡して、と推測することはできません。たとえば、次のようになります。
#include <vector>
template <typename T>
struct A {
void f(const std::vector<T> &) {}
};
int main() {
A<int> a;
a.f({ 1, 2, 3 });
}
裸ブレースリスト初期化子から型情報を取得できないためです。 'a.f({1,2,3});'はうまくいくはずです。 –
jogojapan