在C++11或C++14中,我想定义一个类型别名来表示一个constexpr函数。
我尝试了:
#include <iostream>
constexpr int foo(int i, int j) { return i + j; }
using TConstExprFunction = constexpr int (*)(int i, int j);
int main() {
TConstExprFunction f = foo;
constexpr int i = f(1, 2);
std::cout << i << std::endl;
}
但是它无法使用g++和clang++编译。
g++:
错误:在“constexpr”之前需要类型说明符
clang++:
错误:类型名称不允许指定constexpr限定符
我必须按照下面的方式进行才能使其编译。#include <iostream>
constexpr int foo(int i, int j) { return i + j; }
using TConstExprFunction = int (*)(int i, int j);
int main() {
constexpr TConstExprFunction f = foo;
constexpr int i = f(1, 2);
std::cout << i << std::endl;
}
从clang++的错误信息中看来,似乎我不能使用constexpr
来定义类型名称。
那么,是否可以将类型别名定义为一个constexpr
函数?如果可以,应该如何实现?
static
一样... - Marc Glisse