[英]Template member function overloading issue
N4296::13.1/2.2 [over.load]
的標准N4296::13.1/2.2 [over.load]
說:
同樣,如果其中任何一個是靜態成員函數模板聲明,則不能重載具有相同名稱,相同parameter-type-list和相同模板參數列表的成員函數模板聲明。
所以,我認為以下程序將是不正確的:
#include <iostream>
struct A
{
template <typename T>
static void foo(){ }
template <typename T>
static int foo(){ return 0; }
};
int main(){ }
相比之下,該計划
#include <iostream>
struct A
{
static void foo(){ }
static int foo(){ return 0; }
};
int main(){ }
是不正確的
第一個例子是錯誤嗎?
目前CWG#1252的主題:
標准不允許重載僅在其返回類型上不同的成員函數(cf
enable_if
)。
你引用的措辭可能會被修改,因為沒有任何理由不允許在返回類型中基於SFINAE重載成員函數模板; 我認為標准是有缺陷的,實現是正確的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.