タグ付けされた質問 「function-templates」


4
関数テンプレートを部分的に特殊化できないのはなぜですか?
言語仕様が関数テンプレートの部分的な特殊化を禁止していることを私は知っています。 なぜそれが禁止されているのか、その理由を知りたいのですが?それらは役に立ちませんか? template<typename T, typename U> void f() {} //allowed! template<> void f<int, char>() {} //allowed! template<typename T> void f<char, T>() {} //not allowed! template<typename T> void f<T, int>() {} //not allowed!

2
このテンプレート関数が期待どおりに動作しないのはなぜですか?
私はテンプレート関数について読んでいて、この問題で混乱しました: #include <iostream> void f(int) { std::cout << "f(int)\n"; } template<typename T> void g(T val) { std::cout << typeid(val).name() << " "; f(val); } void f(double) { std::cout << "f(double)\n"; } template void g<double>(double); int main() { f(1.0); // f(double) f(1); // f(int) g(1.0); // d f(int), this is surprising …

5
テンプレートで正しいタイプのデータを返す方法は?
#include <iostream> using namespace std; template <class X, class Y> Y big(X a, Y b) { if (a > b) return (a); else return (b); } int main() { cout << big(32.8, 9); } ここではCPPでテンプレートを使用しているためbig、doubleとinttypeの引数をバイパスして関数を呼び出すと、である返答が必要ですdouble。ここではタイプで、の32代わりに返されます32.8。 どのようにして希望の出力を得るのですか big関数の適切な戻り値の型を記述する方法は?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.