簡體   English   中英

Visual Studio 2013 CTP是否支持非整數類型的類內靜態const初始化程序?

[英]Does Visual Studio 2013 CTP support in-class static const initializers for non-integral types?

當使用g ++(和我上次檢查的clang ++)時,我可以將其寫在標題中並期望它能工作:

struct test
{
    static constexpr float MEANING_OF_LIFE = 42.0f;
};

但是,Visual Studio 2013 CTP需要這樣做(並且編譯時不會出現警告或錯誤):

struct test
{
    static const float MEANING_OF_LIFE;
};
const float test::MEANING_OF_LIFE = 42.0f; // <- In the header, not a .cpp file.

這是Visual Studio的不足還是我做錯了什么?

第二種情況是錯誤的:它需要

struct test
{
    static const float MEANING_OF_LIFE;
};

const float test::MEANING_OF_LIFE = 42.0f; // In an implementation file

實際定義將需要放入實現(.cpp)文件中,而不是標頭中,否則將違反ODR。

第一種情況是有效的C ++ 11,但是我想Visual Studio尚不支持它。 (如果您使用整數類型而不是float ,則可能會起作用,因為C ++ 98也允許這樣做。)

暫無
暫無

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

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