簡體   English   中英

類中的函數模板參數推導

[英]function template argument deduction in a class

我一直認為函數模板參數推導僅適用於如下所示的純函數,不適用於類。

template <class T1,class T2, class T3>
T foo(T2 a, T3 b)
{
   T o;
   //..do something
   return o;
}

今天,我只是偶然地將這樣的函數放到了一個類中,它的工作原理如下。

class MyClass 
{
public:
   template <class T1,class T2, class T3>
   T foo(T2 a, T3 b)
   {
     T o;
     //..do something
     return o;
   }
}

我在Linux中使用g ++ 4.4。 應該失敗還是我誤解了?

我一直認為函數模板參數推導僅適用於如下所示的純函數,不適用於類。

這是不對的。 自由功能和成員功能的推導沒有區別。

模板推導對功能方法 起作用

如果您有模板類,則類似於:

template <class T1, class T2>
class MyClass 
{
public:
   MyClass(T1 a, T2 b)
};

你不能像這樣推斷類型

MyClass m(42, 53);           // Illegal
auto m = MyClass(42, 53);    // Illegal

您必須明確指定類型:

MyClass<int, int> m(42, 53); // Legal 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM