typedef std::array<T, 3> C;
constexpr C c = {1, 2, 3.5};
constexpr T t1 = c.at(0);`
第三行使用g++
编译时给我一个错误。使用LLVM libc ++时,它可以与clang++
配合使用。看来c.at(0)
的返回不是使用C ++ 14的constexpr。但是,std::array::at
的返回类型与here相同。
这是完整的错误消息:
constexpr const value_type& std::__1::array<_Tp,
_Size>::at(std::__1::array<_Tp, _Size>::size_type) const [with _Tp =
double; long unsigned int _Size = 3ul; std::__1::array<_Tp,
_Size>::const_reference = const double&; std::__1::array<_Tp,
_Size>::value_type = double; std::__1::array<_Tp, _Size>::size_type = long
unsigned int]’
以常量表达式调用
constexpr T t1 = c.at(0);