gpt4 book ai didi

c++ - 在 MSVC 和 GCC 上声明和初始化 constexpr 的通用语法

转载 作者:行者123 更新时间:2023-11-30 05:25:33 25 4
gpt4 key购买 nike

namespace MyNS {
template <>
class Test<Test1> {
public:
constexpr static char const *description[] = { "X`", "Y1"};
/*
...
...
*/
}
constexpr char const * Test<Test1>::description[];
/* Above definition is required when compiling with GCC but MSVC compiler gives error saying 'description' is redeclared. */
/* **Omitting definition of 'description', which is written outside class in namespace, causes successful compilation by MSVC but failure in GCC** */
}

是否有一种定义、声明和初始化上述 constexpr 的通用方法,以便 MSVC 和 GCC 都能成功编译代码

最佳答案

这段代码:

#include <iostream>
namespace MyNS {
template<class T> struct Test;
template <>
struct Test<int> {
constexpr static char const * description[] = { "X1", "Y1"};
};
}
int main() {
std::cout << MyNS::Test<int>::description[0];
return 0;
}

编译 - 据我所知 - 使用

  • g++-4.8+ -std=c++11
  • g++-4.8+ -std=c++1y
  • g++-4.9+ -std=c++14
  • g++-6.1+
  • g++-6.1+ -std=c++11
  • g++-6.1+ -std=c++14

没有进一步定义(其中 4.8+ 表示从 g++ 4.8 版开始)。

关于c++ - 在 MSVC 和 GCC 上声明和初始化 constexpr 的通用语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38173761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com