[英]bool return value in function template specialization
我想知道為什么下面的函數模板特化無法編譯(由於no return statement in function returning non-void
)。
class Boring {
public:
template<typename T> bool eval() const { }
};
template<> inline bool Boring::eval<int>() const { return true; }
我希望除非使用,否則不會對非專業功能模板進行評估。 如果返回類型更改為T*
,則以下代碼將成功編譯。
int x = 5;
class Boring {
public:
template<typename T> T* eval() const { }
};
template<> inline int* Boring::eval<int>() const { return &x; }
這兩個程序的格式都正確。 盡管如果實例化和調用主eval
模板會發生未定義的行為,但這不會使程序格式錯誤。 但是,您的編譯器處於某種模式,在這種模式下,它將某些警告視為錯誤(也許是-Wall
),或者默認情況下會將特定警告視為錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.