我剛剛安裝了gcc-4.8.1,當我意識到我可以執行-std = C++ 1y並獲得多行constexpr 。我很想知道,有沒有做這項工作?從C++中的用戶定義文字返回std :: array 11
#include <array>
constexpr auto operator "" _a1 (const char* text, const size_t size) -> std::array<char,size> {
std::array<char,size>() blah;
std::strncpy(blah.data(), test, size);
// do some stuff to blah at compile time
return blah;
}
int main() {
auto blah = "hello world"_a2;
}
但我得到一個大的可怕:
$ g++ test.cpp -std=gnu++1y -Wall -Werror -Wextra -Weffc++ -pedantic
test.cpp:3:100: error: use of parameter ‘size’ outside function body
constexpr auto operator "" _a1 (const char* text, const size_t size) -> std::array<char,size> {
^
test.cpp:3:100: error: use of parameter ‘size’ outside function body
test.cpp:3:100: error: use of parameter ‘size’ outside function body
test.cpp:3:104: error: template argument 2 is invalid
constexpr auto operator "" _a1 (const char* text, const size_t size) -> std::array<char,size> {
^
test.cpp: In function ‘int main()’:
test.cpp:26:17: error: unable to find string literal operator ‘operator"" _a1’
auto blah = "hello world"_a1;
反正有做到這一點?我無法從constexpr返回一個std :: string,並且似乎沒有任何我可以用模板或decltype做的事情。無論如何,從參數中獲得一個常量表達式?
這看起來很酷,我會在它去這個afternoon.C++ 14將支持多constexpr功能,但它看起來像我錯了,這並沒有使它成爲GCC呢。 – HNJSlater
這對我很有用,非常感謝! – HNJSlater