ほとんどがあなたの実際の機能に依存ソリューションが、それは次のように定義することです:
template<typename T>
constexpr void func(T val) { }
その後f(5)
としてそれを呼び出すと、関数自体のパラメータから推定テンプレートパラメータを持っています。
それ以外の場合、C++ 14では、パターンtemplate<typename T, T value>
の使用を避けることはできません。
標準テンプレートライブラリで使用されているのと同じパターンです。例としてstd::integral_constant
の定義を参照してください。で
using IntS = S<int>;
// ....
IntS::func<5>();
:あなたはこのような何かを行うことができ
template<typename T>
struct S {
template<T value>
static void func() {}
};
:
緩和するが(多分)定型文を例として、構造体の使用に基づいており、可能な解決策
template<auto value>
void func() {}
これを呼び出すことができます。それは次のように今後の改訂C++ 17には、あなたはそれを行うには管理しますdをf<5>()
とすると、それはあなたが探しているものです。
「auto」タイプで動作する可能性があります。 –
http://open-std.org/JTC1/SC22/WG21/docs/papers/2016/p0127r2.html –
なぜテンプレートではないのですか? constexpr void func(T val){} 'を呼び出し、それを' f(5 ) '? –
skypjack