gcc-4.8.1 をインストールしたばかりで、-std=c++1y を実行して複数行の constexpr を取得できることに気付いたときはかなり興奮しました。知りたいのですが、とにかくこれを機能させる方法はありますか?
#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 でできることはないようです。パラメータから定数式を取得する方法はありますか?