簡體   English   中英

Visual Studio 2013模板別名

[英]Visual Studio 2013 template alias

以下代碼

template <class Integral>
using enable_if_integral_t = typename std::enable_if<std::is_integral<Integral>::value>::type;

template <class Integral, class Enable = void>
class DigitsNumber;

template <class Integral>
class DigitsNumber<Integral, enable_if_integral_t<Integral>>{
};

在MSVC 2013中生成錯誤:

錯誤C3203:'enable_if_integral_t':unspecialized別名模板不能用作模板參數'Enable'的模板參數,期望是真實類型

但是在gcc中編譯很好。

此代碼是否符合C ++ 11標准,以及Visual Studio錯誤/未實現的功能,或者它不符合標准,而是gcc擴展。

有沒有辦法在VS中使這項工作?

謝謝。

我能夠使用dyp提供的鏈接解決這個問題:

template <class Integral>
struct MSVCWorkaround : std::enable_if<std::is_integral<Integral>::value, SomeType> {};

template <class Integral>
using enable_if_integral_t = typename MSVCWorkaround<Integral>::type;

暫無
暫無

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

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