2015-07-20 51 views
1

初始化const成員下面的代碼編譯使用的Xcode 6.3.2但不是的Visual Studio 2013年與make_shared

#include <cstdint> 
#include <memory> 

class Y 
{ 
public: 
    Y(uint32_t i) : m_i(i) 
    { 
    } 

private: 
    uint32_t m_i; 
}; 

class X 
{ 
public: 
    X() = default; 

private: 
    const uint32_t m_dimension = 2; 
    const std::shared_ptr<Y> m_y = std::make_shared<Y>(m_dimension); 
}; 

報告的錯誤是:

error C2783: 'std::shared_ptr<_Ty> std::make_shared(_Types &&...)' : could not deduce template argument for '_Ty' 

難道這是在Visual編譯器錯誤工作室還是有問題的代碼?

+1

這個代碼編譯不會對視覺2013的任何錯誤(更新4)解決它。爲了產生這個錯誤,我必須寫'make_shared('而不是'make_shared (' – Hcorg

+0

)這個錯誤已經[記錄](https://connect.microsoft.com/VisualStudio/feedbackdetail/view/818825/torino- – Alejandro

+0

@Hcorg - Update 4?我如何找到這些信息?我只看到: Microsoft Visual Studio Express 2013 for Windows桌面 版本12.0.21005.1 REL Microsoft .NET Framework 版本4.5.50938 – ksl

回答

2

看起來好像你不是唯一有這個問題的人 - 這個bug已經是documented!較新版本的Visual Studio不應該有這個問題(Visual Studio 2013的Update 4似乎是起點)。

2

我與VS2013更新4同樣的問題,並通過將其更新到版本5